正则表达式匹配任何字符,包括换行符

标签 regex perl

是否有正则表达式来匹配“包括换行符在内的所有字符”?

例如,在下面的正则表达式中,$2 没有输出,因为 (.+?) 匹配时不包含新行。

$string = "START Curabitur mollis, dolor ut rutrum consequat, arcu nisl ultrices diam, adipiscing aliquam ipsum metus id velit. Aenean vestibulum gravida felis, quis bibendum nisl euismod ut. 

Nunc at orci sed quam pharetra congue. Nulla a justo vitae diam eleifend dictum. Maecenas egestas ipsum elementum dui sollicitudin tempus. Donec bibendum cursus nisi, vitae convallis ante ornare a. Curabitur libero lorem, semper sit amet cursus at, cursus id purus. Cras varius metus eu diam vulputate vel elementum mauris tempor. 

Morbi tristique interdum libero, eu pulvinar elit fringilla vel. Curabitur fringilla bibendum urna, ullamcorper placerat quam fermentum id. Nunc aliquam, nunc sit amet bibendum lacinia, magna massa auctor enim, nec dictum sapien eros in arcu. 

Pellentesque viverra ullamcorper lectus, a facilisis ipsum tempus et. Nulla mi enim, interdum at imperdiet eget, bibendum nec END";

$string =~ /(START)(.+?)(END)/;

print $2;

最佳答案

如果您不想添加 /s 正则表达式修饰符(也许您仍然希望 . 在正则表达式中的其他位置保留其原始含义),您也可以使用一个字符类。一种可能性:

[\S\s]

不是空格或本身就是空格的字符。换句话说,任何字符。

您还可以在正则表达式的一小部分中本地更改修饰符,如下所示:

(?s:.)

关于正则表达式匹配任何字符,包括换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8303488/

相关文章:

regex - 使用 perl 单行和正则表达式删除具有特定模式的 2 行之间的所有行

arrays - Perl:将文件加载到哈希中

windows - Perl 不接收命令行参数?

python - 为什么这个解决方案会失败?嵌套和匹配的括号

swift - 如何从正则表达式匹配中获取范围

regex - 正则表达式匹配和替换或匹配和拆分

java - 如何在java中使用\\p{Punct}检查文本行的开头是否为: {"

xml - 如何在perl中使用xpath分割xml?

algorithm - 在 Perl 中确定范围重叠的最快方法

java - 正则表达式捕获可能存在或可能不存在的一组组