Expressions régulières: trouver de chaîne sans chaîne
J'ai un gros texte:
"Big piece of text. This sentence includes 'regexp' word. And this
sentence doesn't include that word"
J'ai besoin de trouver des sous-chaîne qui commence par "ce "et se termine par" mot "mais n'est pas inclure mot" regexp'.
Dans ce cas la chaîne: "this sentence doesn't include that word
", c'est exactement ce que je veux recevoir.
Comment puis-je le faire via des Expressions Régulières?
Vos règles sont confus ou vous avez fait une erreur de sortie attendue. Pourquoi pas "Et" et pourquoi pas un "Gros morceau de texte."
commence par " il "et se termine par "mot""
Ces règles sont source de confusion, mais correct. J'ai passé beaucoup de temps à trouver quelque chose dans google, mais rien trouvé.
commence par " il "et se termine par "mot""
Ces règles sont source de confusion, mais correct. J'ai passé beaucoup de temps à trouver quelque chose dans google, mais rien trouvé.
OriginalL'auteur Artem | 2012-08-08
Vous devez vous connecter pour publier un commentaire.
Avec un cas ignorer option, la suivante devrait fonctionner:
Exemple: http://www.rubular.com/r/g6tYcOy8IT
Explication:
La
\b
entourant chaque mot permet de s'assurer que vous n'êtes pas d'appariement de sous-chaînes, comme correspondant à la " il "dans " chardon", ou le " mot "dans " verbeux'.Cela fonctionne en vérifiant à chaque personnage entre votre départ et votre mot fin mot pour vous assurer que les exclus mot ne se produit pas.
+1 pour la bonne explication de la regex et le lien pour jouer avec elle - j'ai été en mesure de l'appliquer à quelque chose de similaire et aurait lutté sans explication. Je en avoir marre avec les réponses que juste de donner un peu de code sans dire comment il fonctionne.
Vous m'a beaucoup aidé! Merci!
OriginalL'auteur Andrew Clark
Utilisation d'anticipation asseterions.
Lorsque vous voulez vérifier si une chaîne ne contient pas d'autre sous-chaîne, vous pouvez écrire:
Vous devez vérifier aussi le début et la fin de la ligne pour
this
etword
:Un autre problème, c'est que vous n'avez pas de travail rechercher des chaînes, vous voulez trouver des phrases (si je comprends bien votre tâche la droite).
Donc la solution ressemble à ceci:
Exemple d'utilisation:
de quoi parles-tu? Cette soultion n'résoudre la tâche. Vous pouvez essayer vous-même.
J'ai essayé la RegEx affichés, et il ne le fait pas.
(?!
l'empêcher de correspondant à tous les cas où la sous-chaîne apparaît aprèsthis
(à partir de l'exemple), même si la sous-chaîne apparaît aprèsword
. À l'aide d'un imbriquée(?:(?!
par F. J la réponse de correctifs. Je n'ai pas de Perl disponibles pour tester ce morceau de code, mais je ne suis pas apprendre quelque chose en le regardant, et de ce que j'ai dire ce n'est pas une RegEx solution de toute façon, puisqu'il semble être manuellement la marche à travers la chaîne avec quiwhile
boucle. La question est étiquetéregex
pasperl
.si la sous-chaîne apparaît après le mot." il ne peut pas apparaître après mot, parce que bowrd la dernière partie de la chaîne
Oh, je comprends la confusion maintenant. Vous êtes l'exemple du cas de test comme la chaîne de caractères exacte qu'il veut analyser. Ses conditions ne sont pas que le mot sera toujours la dernière partie de la chaîne, qui arrive juste à être vrai dans l'exemple qu'il a donné. Si vous aviez la chaîne
This sentence has the "regexp" word. This sentence doesn't have the word. This sentence does have the "regexp" word again.
votre code ne trouver aucun résultats.OriginalL'auteur Igor Chubin