我想匹配一个文本(数字,字符串,特殊字符,空格,一个换行符...),然后至少匹配两个换行符(每行以空格开头,然后换行)。目前,我只能匹配多个换行符,但是我想匹配之前的文本。
我正在使用以下正则表达式:\n+\s*\n+
这是我的输入:
Test Test TestTester TestTestt Test Test TestTestTestTest: 29724 @erq
Test Test we Test Test, iuow, 0202220
Test Test 962ert64
Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest
Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest
Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest
Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest Test Test TestTestTestTest
输出应为:
Test Test TestTester TestTestt Test Test TestTestTestTest: 29724 @erq
Test Test we Test Test, iuow, 0202220
Test Test 962ert64
答案 0 :(得分:2)
这应该有所帮助:
$re = '/(.+\n)\n\s*\n/sU';
preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);
标志s
和U
在这里非常重要!
s
表示.
将与换行符匹配,而U
将使量词变得不贪婪(惰性)。
这是一个可行的示例:https://regex101.com/r/G0KS3g/1
UPD::如果您不能使用标志,请尝试以下操作:
([\S\s]*?)\n\s*\n
这里我们有一个懒惰的量词*?
,[\S\s]
匹配除换行符.
或换行符\n
以外的任何字符。
但是,您软件的regex方言可能会带来更多限制。