J'essaie de faire correspondre un modèle de regex en Java et j'ai deux questions:
Par exemple, j'ai cette ligne d'entrée:
p> et je m'intéresse à ces chaînes: p>
6 Réponses :
La regex que vous recherchez est vous pouvez utiliser correspondeur.find () code> pour trouver tous les matchs. P> P >
Merci, mais c'était un exemple spécifique pour un cas général qui tiendra d'autres cordes. la chose certaine est que je veux obtenir la chaîne du filtre = jusqu'au premier et
Dans votre exemple, il y a parfois un "**" à la fin avant le "&". Mais fondamentalement, (en supposant que "filtrer =" est le modèle de démarrage que vous recherchez) Vous voulez quelque chose comme: p>
"filtre = ([^ &] +) &" code> p>
Je vois que le regard positif sur l'avenir était exactement ce dont j'avais besoin. Merci!
Utilisation de l'expression régulière (? en Java: Pattern p = Pattern.compile("(?<=filter=\\*{0,2})[^&]*[^&*]+");
String s = "1234567 100,110,116,129,139,140,144,146 http://www.gold.com/shc/s/c_10153_12605_Computers+%26+Electronics_Televisions?filter=**Screen+Refresh+Rate%7C120HZ%5EScreen+Size%7C37+in.+to+42+in.&sName=View+All**&viewItems=25&subCatView=true ISx20070515x00001a http://www.gold.com/shc/s/c_10153_12605_Computers+%26+Electronics_Televisions?filter=**Screen+Refresh+Rate%7C120HZ**&sName=View+All&subCatView=true 0 2819357575609397706";
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
}
Si je sais que je pourrais avoir besoin d'autres paramètres de requête à l'avenir, je pense que ce sera plus prudent de décoder et d'analyser l'URL.
subCatView = true viewItems = 25 sName = View All filter = Screen Refresh Rate|120HZ^Screen Size|37 in. to 42 in.
En supposant que le début connu est filtre = ** code>, le modèle d'expression régulier (?: filtre = \\ * \\ *) (. *?) (?: &) devrait vous obtenir ce dont vous avez besoin. Utilisez Correspondant.Find () CODE> Pour obtenir toutes les occurrences du motif dans une chaîne donnée. Utilisation de la chaîne de test que vous avez fournie, les suivantes: 1: G1: Screen+Refresh+Rate%7C120HZ%5EScreen+Size%7C37+in.+to+42+in.
2: G1: Screen+Refresh+Rate%7C120HZ**
Pourriez-vous s'il vous plaît inclure les teststring afin que nous puissions essayer cela pour de vrai? (L'essai de test de l'OP ne fonctionne pas avec ce code)
Recherchez-vous une chaîne qui suit avec "filtrer =" et ignore le premier "*" et est terminé par le premier "&".
Votre peut essayer ce qui suit: