Emacs Regulärer Ausdruck: was \ und \ kann das \ nicht tun?

8

Regexp Backslash - GNU Emacs Handbuch sagt, dass \< Übereinstimmungen am Anfang eines Wortes, \> stimmt am Ende eines Wortes überein und \b stimmt mit einer Wortgrenze überein. \b ist genauso wie in anderen regulären Ausdrücken von Nicht-Emacs. Aber es scheint, dass \< und \> speziell für die regulären Ausdrücke von Emacs sind. Gibt es Fälle, in denen \< und \> anstelle von \b benötigt werden? Zum Beispiel würde \bword\b genauso aussehen wie \<word\> , und der einzige Unterschied ist, dass letzteres lesbarer ist.

    
Yoo 30.04.2011, 19:31
quelle

2 Antworten

10

Sie können unerwartete Ergebnisse erhalten, wenn Sie davon ausgehen, dass sie sich gleich verhalten.
Was kann \ & lt; und & gt; das kann tun? Die Antwort ist, dass \< und \> explizit sind ... Dieses Ende eines Wortes! und nur dieses Ende!
\b ist allgemein ... Jedes Ende eines Wortes wird übereinstimmen ...

GNU-Operatoren * Wort-Operatoren

%Vor%

Ausgabe

%Vor%     
Peter.O 30.04.2011, 23:21
quelle
1

Es sieht so aus, als würde \<.*?\> nur einer Reihe von Wortzeichen entsprechen, während \b.*?\b entweder einer Reihe von Wortzeichen oder einer Reihe von Nicht-Wortzeichen entspricht, da es auch das Ende eines Wortes akzeptieren kann dann der Anfang von eins. Wenn Sie den Ausdruck zwischen den beiden zwingen, ein Wort zu sein, verhalten sie sich tatsächlich gleich.

Natürlich könnten Sie das Verhalten von \< und \> mit \b\w und \w\b replizieren. Ich denke also, die Antwort ist, dass es ja hauptsächlich um Lesbarkeit geht. Andererseits, ist das nicht das, was die meisten Escape-Zeichen im regulären Ausdruck sind?

    
dlras2 30.04.2011 20:05
quelle

Tags und Links