正则expression式匹配包括新行在内的任何字符

有一个正则expression式匹配“包括换行符在内的所有字符”吗?

例如,在下面的正则expression式中, $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修饰符添加到您的正则expression式中. 匹配换行符:

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

如果你不想添加/s正则expression式修饰符(也许你仍然想要在正则expression式的其他地方保留它的原始含义),你也可以使用一个字符类。 一种可能性:

 [\S\s] 

一个不是空间或空间的angular色,换句话说,就是任何angular色。

您也可以在正则expression式的一小部分本地修改修饰符,如下所示:

 (?s:.) 

Yeap,你只需要做. 匹配换行符:

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

你想使用“多行”。

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