R-regex: les chaînes de correspondance ne commencent pas par un motif
Je voudrais utiliser des regex pour vérifier si une chaîne ne commence pas par un certain modèle. Alors que je peux utiliser: [^
à la liste noire de certains personnages, je ne peux pas comprendre comment à la liste noire d'un modèle.
> grepl("^[^abc].+$", "foo")
[1] TRUE
> grepl("^[^abc].+$", "afoo")
[1] FALSE
J'aimerais faire quelque chose comme grepl("^[^(abc)].+$", "afoo")
et obtenir TRUE
c'est à dire de match si la chaîne ne commence pas par abc
séquence.
Remarque que je suis conscient de ce postet j'ai aussi essayé d'utiliser perl = TRUE
mais sans succès:
> grepl("^((?!hede).)*$", "hede", perl = TRUE)
[1] FALSE
> grepl("^((?!hede).)*$", "foohede", perl = TRUE)
[1] FALSE
Des idées?
source d'informationauteur aL3xa
Vous devez vous connecter pour publier un commentaire.
Ouais. Mettre le zéro de la largeur d'anticipation /extérieur/les autres parens. Cela devrait vous donner ceci:
qui, je pense, est ce que vous voulez.
Alternativement, si vous voulez capturer la totalité de la chaîne,
^(?!hede)(.*)$
et^((?!hede).*)$
sont à la fois l'équivalent et acceptable.J'ai coincé sur le cas spécial suivant, j'ai donc pensé que je voudrais partager...
Ce que si il y a plusieurs occurrences de l'expression régulière, mais vous voulez seulement le premier segment?
Apparemment, vous pouvez désactiver l'implicite gourmandise de la recherche
avec spécifique perl générique modificateurs
Supposons que la chaîne que je voulais processus a été
et que je ne voulais que le premier segment avant le premier
"__"
.Je ne peux pas tout simplement une recherche sur
"_"
, parce que seul trait de soulignement estdéductible au titre d'un non-délimiteur dans cet exemple de chaîne.
Le suivant ne fonctionne pas. Au lieu de cela, il me donne la première et deuxième segments en raison de la valeur par défaut gourmandise (mais pas le troisième, en raison de l'avant-look).
Mais cela ne fonctionne
La différence, c'est la gourmande-modificateur
"?"
après le générique".+"
dans l' (perl) expression régulière.