Dites que j'ai une longue chaîne de texte, et je veux capturer chaque fois que le mot par exemple, en utilisant le motif ci-dessus sur le texte suivant: p> etiam scelérisque, Nunc AC ESGEAS Cadifa, (ODIO Ceci STRAND> NIBH EUISMOD NULLA, EGET ARTICOR ORCI NIBH VEL retournera uniquement le premier Qu'est-ce que je fais mal? P> < / p> ceci code> est mentionné dans les supports arrondis. Comment pourrais-je faire ça? Le modèle suivant ne correspond que le premier ceci code>, ignorant chaque occurrence après:
ce code> après le mot ODIO code>. p>
4 Réponses :
Tout d'abord, ne soyez pas gourmand. P>
Deuxièmement, si vous visez à compter le nombre d'occurrences de "Ceci", une regex n'est probablement pas le bon outil ici. Le problème est que vous devez faire correspondre le délimiteur de clôture afin de déterminer que le premier "ceci" est joint, ce qui signifie que continuer à appliquer la regex ne correspond à rien à l'intérieur de cet ensemble déjà consommé de délimiteurs. P>
La regex que j'ai ci-dessus attrapera des choses comme: p>
mais non (il ne correspondra que deux fois, une fois pour chaque ensemble de délimiteurs): p>
Essayez d'utiliser un simple scanner à une seule passe au lieu d'une regex. Une autre alternative consiste à utiliser deux expressions régulières, une pour séparer la chaîne en sections fermées et non fermées, et une autre pour rechercher dans les régions fermées. P> / \ (. *? (this). *? \) / g code> p> P>
foo (Baz this bar) (foo this) code> p>
foo (ceci ce bar) baz (celui-ci ceci) code> p>
L'utilisation de . * code> va correspondre à chaque personnage de votre chaîne de recherche. Alors, qu'est-ce que vous faites en réalité ici, c'est gênement tout correspondant avant et après la première occurrence de ce code> trouvé dans des parenthèses. Vos résultats de correspondance actuels ont probablement l'air un peu comme les éléments suivants: # Match everything inside the parentheses
/\([^\)]*\)/
# Match all occurrences of the word 'this' inside a substring
/this/g
J'ai implémenté la regex pour joindre tous les caractères alphanumériques à l'aide de RegEx ci-dessous: espère que cela aide. p> p>
(this) p>
La chaîne ci-dessus fonctionne pour moi, essayez ceci sur http://regex101.com p>
à la valeur faciale, je ne vois rien de mal avec ce modèle ... Postez le code que vous l'utilisez dans
OK, il y a donc 3 "ceci" dans votre exemple de texte. Alors quelle est la sortie attendue ?? Voulez-vous que le nombre de "ceci" dans ces supports? Ou voulez-vous juste retourner quoi que ce soit entre ces supports? Décrivez clairement ce que vous voulez comme sortie
+1 UTI LINGUA LATINA. :)