正则 [.\n]* (.|\n)* 区别

来源:互联网 发布:苹果文字扫描识别软件 编辑:程序博客网 时间:2024/05/08 01:22

实例: 

Do you like the regular expression.\    I think so.


如果希望匹配连续多行文本,比如上面的代码内容:一个逻辑行可以分为许多现实的行,每一行以反斜线结尾。

曾经我写过的代码为:^[.\n]*

 理由:.号匹配除换行符\n之外任何单字符,当然包括反斜线\,\n匹配换行符。似乎很不错,但结果却无法匹配。

 这个问题曾经也让我纳闷了一段时间。如果换成(.|\n)*则OK。

 

为什么^[.\n]*无法匹配上例文本?

 原因:

 字符组内部,元字符的定义与外部是不一样的。在字符组内部,只有连字符“-”且连字符不能出现在字符组的开头,它才属于元字符,表示一个范围。

 比如[1-9],等同于[123456789]

 [-19],它可以匹配字符-19。这里的-不属于元字符

 因此,本篇文章介绍的^[.\n]*中的.号,并不是我们认为的除换行符\n之外的任何单字符,它代表的就是字符.。当然无法匹配我们想要的结果。

 我们可以写为:^[.\\\w\s]*

原创粉丝点击