簡體   English   中英

正則表達式匹配任何字符,包括新行

[英]Regex to match any character including new lines

是否有正則表達式匹配“包括換行符在內的所有字符”?

例如,在下面的正則表達式中, $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:.)

s修飾符添加到您的正則表達式以導致. 匹配換行符:

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

是的,你只需要 make . 匹配換行符:

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

您想使用“多行”。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM