In Vim entspricht die Zeichenklasse einem \s
beliebigen Leerzeichen. Wenn ich diese Sonderzeichen in Gruppen verwende [\s\w]
, stimmt sie beispielsweise nicht mit einem einzelnen Leerzeichen oder Wortzeichen überein, sondern mit s
oder w
.
Wie verwendet man Zeichenklassen in Gruppen?
regular-expression
John HK
quelle
quelle
[[:space:][:alnum:]_]
kann verwendet werden, um die Sammlung von\s
und zu approximieren\w
.Antworten:
Dies ist keine Gruppe, sondern ein Bereich, und in Vim können keine Zeichenklassen verwendet werden (obwohl dies in anderen Regex-Implementierungen, z . B. in Python, möglich ist ). Sie müssen stattdessen eine Alternative verwenden:
oder:
(oder die von Peter Lewerin vorgeschlagene Lösung ).
quelle
\s
in einer Zeichenklasse zu verwenden. Die Regex-Implementierung von Vim hat diese Wahl getroffen, aber bei anderen Implementierungen können Sie sie verwenden[\s]
.Im Gegensatz zu einigen Implementierungen von Modulen für reguläre Ausdrücke scheint Vim diese Notation (
[\s\w]
) in Auflistungen nicht zu unterstützen . Man kann jedoch POSIX-Zeichenklassenausdrücke verwenden .[:blank:]
ist das gleiche wie\s
.[:space:]
stimmt mit einer größeren Anzahl von Leerzeichen überein als dies der\s
Fall ist und scheint äquivalent zu zu sein\_s
.[:alnum:]
approximiert\w
, stimmt aber nicht mit dem Unterstrich (_
) überein .Die gewünschte Sammlung könnte also als
[[:blank:][:alnum:]_]
oder geschrieben werden[[:space:][:alnum:]_]
.Ich habe dies nicht durch Tests überprüft, aber es ist dokumentiert in
:h regexp
,:h /character-classes
und:h /collection
.Hinweis zur Portabilität: In anderen Regex-Engines
\s
ist dies in der Regel dasselbe wie in Vim[:space:]
(oder\_s
).quelle