0

我有一个可能包含分隔符的字符串。这可能意味着我有三种情况:

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)

我只需要模式。

4

1 回答 1

1

问题可能是,.默认情况下不匹配换行符。您可以使用修饰符来更改它s

/(.*)(<!-- separator -->.*)?/s

s是单行修饰符,它使正则表达式将输入字符串视为“单行”,这意味着.也将匹配换行符。

但是你应该使量词不贪婪,否则第一个.*将匹配到<!-- separator -->字符串中的最后一个。

/(.*?)(<!-- separator -->.*)?/s
于 2012-11-05T09:33:20.090 回答