正则表达式匹配一行而不是两个新行



您好,我正在尝试使用正则表达式从 html 中获取文本

([a-zA-Z0-9:[]40.',?"&(/)-“”’@]){600,} // let's say the example is more than 600 letters

问题是

我想添加n两个我的正则表达式,但最多两个换行符,例如

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dictum metus ipsum, ut hendrerit sem consectetur quis.   
n
Nunc tincidunt mi nisl, in lobortis diam pulvinar vel. Nulla at tempus enim, sit amet viverra nisl.
n
Nunc tincidunt mi nisl, in lobortis diam pulvinar vel. Nulla at tempus enim, sit amet viverra nisl.
n
n
Not this 

它只会匹配前 3 行,所以我得到类似的东西

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dictum metus ipsum, ut hendrerit sem consectetur quis.   
n (ok)
Nunc tincidunt mi nisl, in lobortis diam pulvinar vel. Nulla at tempus enim, sit amet viverra nisl.
n (ok still one)
.....
n (ok still one)
n (ups its more than one then stop a group)

结果将是

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dictum metus ipsum, ut hendrerit sem consectetur quis.   
Nunc tincidunt mi nisl, in lobortis diam pulvinar vel. Nulla at tempus enim, sit amet viverra nisl.
Nunc tincidunt mi nisl, in lobortis diam pulvinar vel. Nulla at tempus enim, sit amet viverra nisl.

这是一个负面的前瞻断言的工作:

[a-zA-Z0-9: [].',?"&(/)“”’@-]{600,}nn(?!n)
匹配

600 个或更多允许的字符,仅当匹配后找不到其他换行符时,才匹配两个换行符。

一个可能的解决方案是。

    ([a-zA-Z0-9:[]40.',?"&(/)-“”’@]n?){600,}

两件事:

  • 换行符将不计入字符限制(在您的情况下为 600)

  • 这在您的示例中不起作用,因为它的字符少于 600 个字符(大约 330 个字符)。

最新更新