匹配文本后跟多个带空格的换行符

问题描述 投票:1回答:1

我想匹配一个文本(数字,字符串,特殊字符,空格,一个换行符......),然后至少有两个换行符(每行以空格开头,然后是换行符)。目前我只能匹配多个换行符,但我想匹配之前的文本..我正在使用这个正则表达式:\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
php regex pcre
1个回答
2
投票

这个应该有所帮助:

$re = '/(.+\n)\n\s*\n/sU';
preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);

标志sU在这里非常重要!

s意味着.将匹配换行符,U将使量词不合适(懒惰)。

这是一个有效的例子:https://regex101.com/r/G0KS3g/1

UPD:如果你不能使用标志,试试这个:

([\S\s]*?)\n\s*\n

这里我们有一个懒惰的量词*?[\S\s]匹配任何字符,除了换行符.或换行\n

但是,软件的正则表达式可能会带来更多限制。

© www.soinside.com 2019 - 2024. All rights reserved.