Übereinstimmungszeichenfolge, aber nur, wenn keine andere Zeichenfolge vorangestellt ist

8

Sagen Sie, ich habe Vektor von Strings:

%Vor%

Wie schreibe ich Regex, das zu allen Strings passt, die der Phrase "low" ähneln?

grep("lo", v, ignore.case=T) # 1 2 3 4 5 6 7

Dies entspricht auch der ersten Zeichenfolge, die ich nicht möchte.

Wie passt man lo nur an, wenn nicht mit dem Buchstaben c ?

vorangestellt ist?     
Daniel Krizian 31.07.2014, 10:52
quelle

2 Antworten

15

Negatives Lookbehind (PCRE in R)

R verwendet die PCRE-Engine, die Lookbehind unterstützt. Tun Sie dies:

%Vor%

Der negative Lookbehind (?<!c) behauptet, dass das, was der aktuellen Position vorausgeht, kein c

ist

Option 2: Großbuchstaben prüfen, Inline-Groß- / Kleinschreibung aktivieren

Nach Ihrer Eingabe wäre eine allgemeinere Option, zu behaupten, dass lo kein Großbuchstabe vorangestellt ist:

%Vor%

Für diese Option verwenden wir den Inline-Modifizierer (?i) , um die Groß- / Kleinschreibung zu aktivieren, aber erst nachdem wir überprüft haben, dass vor unserer Position keine Großbuchstaben stehen.

Referenz

zx81 31.07.2014, 10:58
quelle
3

Sie können einen negativen Lookbehind verwenden:

%Vor%

Dadurch wird sichergestellt, dass der Zeichenfolge nicht C vorausgeht.

    
Mowday 31.07.2014 11:00
quelle

Tags und Links