我有一个可能包含分隔符的字符串。这可能意味着我有三种情况:
First and only paragraph
First and only paragraph with redundant separator
<!-- separator -->
First paragraph
<!-- separator -->
Second paragraph
我需要一个正则表达式,分别返回第一个和第二个段落(如果存在)。这是我到目前为止所尝试的:
(.*)(<!-- separator -->.*) // fails case 1
(.*)(<!-- separator -->.*)? // fails case 2 and 3 (surprise)
我只需要这种模式。
答案 0 :(得分:1)
问题可能是.
默认情况下与换行符不匹配。您可以使用修饰符s
来更改此项。
/(.*)(<!-- separator -->.*)?/s
s
是单行修饰符,它使正则表达式将输入字符串视为“单行”,表示.
也会匹配换行符。
但是你应该使量词不合理,否则第一个.*
将匹配到字符串中的最后一个<!-- separator -->
。
/(.*?)(<!-- separator -->.*)?/s