匹配包含 a-zA-Z 以外字符的单词

Mar*_*rco 18 vim regular-expression

匹配一个可以使用的词

\v(\w+)
Run Code Online (Sandbox Code Playgroud)

从 vim 帮助:h \w

\w 单词字符:[0-9A-Za-z_]

这完全按照手册中的描述工作。但是,我想匹配包含超出 字符的单词a-z,例如 prästgården。将正则表达式\v(\w+)prästgården匹配产生三个匹配项,而不是:

prästgården
^^ ^^^ ^^^^
Run Code Online (Sandbox Code Playgroud)

如何匹配包含超出字符的单词a-z?我的语言环境设置为英语,如果可能的话,我想保持这种状态。

编辑:这些词可能不属于单个语言环境,例如

prästgården
tre??
Run Code Online (Sandbox Code Playgroud)

Gil*_*il' 9

Vim(从 7.3 版开始)在模式中支持非 ASCII 字符方面非常有限。特别是\w只匹配ASCII字母,用处有限。

有一些字符类模式确实支持 Unicode。您感兴趣的是\I,它大体上匹配字母并且仅匹配字母, plus_@。至少在 Debian 压缩(在 UTF-8 语言环境中),有错误;例如×÷作为字母匹配,但所有拉丁重音字母似乎都能正确识别。\I可以通过isident选项配置,至少对于 ASCII 部分。

如果您想要真正的 Unicode 支持,则需要依赖外部工具。例如perl -C -e '/\p{L}/'匹配 UTF-8 字母(假设是 UTF-8 语言环境)。


Han*_*zel 5

使用\k. 见iskeyword选项。