2016-03-23 13 views
1

Die R-Hilfedatei regex sagtRegex Differenz zwischen Wortgrenze Ende und Kanten

Die Symbole \ < und \> jeweils die leere Zeichenfolge Abgleichung am Anfang und Ende eines Wortes. Das Symbol \ b den leeren String an den Rand eines Wortes

Was ist der Unterschied zwischen einem Ende und einer Kante (eines Wortes)?

Antwort

2

Der Unterschied zwischen dem \b und \</\> ist, dass \b können in PCRE regex Muster verwendet werden und die ICU regex Muster (stringr Paket) (wenn man perl=TRUE angeben).

> s = "no where nowhere" 
> sub("\\<no\\>", "", s) 
[1] " where nowhere" 
> sub("\\<no\\>", "", s, perl=T) ## \> and \< do not work with PCRE 
[1] "no where nowhere" 
> sub("\\bno\\b", "", s, perl=T) ## \b works with PCRE 
[1] " where nowhere" 

> library(stringr) 
> str_replace(s, "\\bno\\b", "") 
[1] " where nowhere" 
> str_replace(s, "\\<no\\>", "") 
[1] "no where nowhere" 

Der Vorteil \< (steht immer für den Anfang eines Wortes) und \> (immer stimmt mit dem Ende eines Wortes) ist, dass sie eindeutig sind. Die \b kann beide Positionen übereinstimmen.

Eine weitere Sache zu prüfen (refrence):

POSIX 1003.2-Modus von gsub und gregexpr funktioniert nicht richtig mit wiederholtem Wort-Grenzen (zum Beispiel pattern = "\b"). Verwenden Sie perl = TRUE für solche Übereinstimmungen (aber das funktioniert möglicherweise nicht wie erwartet mit Nicht-ASCII-Eingaben, da die Bedeutung von 'Wort' systemabhängig ist).

+0

Gibt es weitere Unterschiede? Macht die Ausgabe für Sie Sinn oder ist das ein Fehler 'txt <- c (" Mein Name ist ASDFNAKFANDpancake "); gsub ("\\ <", "%", txt) '? – Jota

+1

Es gibt einen Fehler in 'gsub', wenn Sie ihn mit einem TRE-Regex verwenden, verwenden Sie den PCRE' gsub ("\\ b", "%", txt, perl = T) ', siehe mein Update. –

+0

Wenn Sie mich fragen, sollten Sie lieber bei '\ b' bleiben: Es wird von den meisten, wenn nicht allen Regex-Online-Testern (wie [regex101.com] (http://regex101.com)) erkannt. Verwenden Sie Assertion nur für Assertion mit geringer Breite mit Vorsicht. –

Verwandte Themen