什么是 .匹配?

什么是 .匹配?

在使用正则表达式时,我被告知点字符.将匹配一切

除了换行符\n

还有其他例外吗? NUL 字符\0、退格字符\b或任何其他各种不可打印的 ASCII 字符又如何呢?

不同的实用程序/程序(例如 sed、awk、perl 和 vim)在这方面的行为是否不同或相同?

答案1

info regex

3.2 匹配任意字符运算符 (`.')
===========================================

该运算符匹配任何单个打印或非打印字符
除非它不匹配:

 新队
      如果未设置语法位“RE_DOT_NEWLINE”。

 无效的
      如果设置了语法位“RE_DOT_NOT_NULL”。

答案2

.相当于[^\n]所有标准 UNIX 正则表达式风格,但是,在 Windows 上,这通常是[^\r\n]由于 Windows 样式行结尾的语法造成的。在其他平台上,它应该评估标准换行序列是什么。

在 Perl 和其他一些语言中,单行模式.也将匹配\n(或[\r\n]在 Windows 正则表达式风格等上),使其真正匹配任何内容。

请记住, 的含义.可能会根据上下文而变化,例如,在 POSIX 方括号表达式中,点字符与文字点匹配。

答案3

如果您使用任何计划 9 公用事业,也许山姆编辑,使用结构常用表达, 这 '。'元字符匹配每个字符除了新队。我相信“@”匹配任何单个字符,包括换行符。的性质结构正则表达式鼓励编写多行模式,或者可能是“忽略行结构的模式”。看起来有一个结构正则表达式Python模块在谷歌代码中,但我无法通过谷歌搜索到更多的实现方式。

相关内容