匹配多行正则表达式中的最小并发行数

Match a minimum number of concurrent lines in multiline regular expression

我正在寻找一种模式,使我能够识别由单词列表组成的文档中的文本范围。以此文为例。

property
subject
recipe
newsletter
news
match
reply
bulletin
joke
annual
greeting
accepted
puzzle
march
meeting
din
order
alert
printer
thursday
case
chicago
member

像这样的 运行 文本通常会出现在垃圾邮件正文的 HTML 中间。每行总是一个单词。这些词总是英文的,所以我不必担心 uff-8 字符。这些词是为了混淆贝叶斯过滤器,但它们应该很容易匹配。

我正在寻找一种连续匹配多行的方法。像这样的简单正则表达式将匹配一行:

/^\w+$/

现在,我希望能够找到至少 20 条或更多条匹配线。我怎么做?它看起来像这样吗?

/^\w+${20,}/

如有任何帮助,我们将不胜感激!

你很接近。您需要将表达式分组在括号内,以便量词将应用于整个表达式,而不仅仅是前一个字符。您还需要将换行符本身也放入正则表达式中。

/(^\w+$\n){20,}/

根据您使用的语言,您可能还需要添加 m(多行)修饰符,以便 ^$ 匹配开头和行尾,而不是整个输入字符串。

/(^\w+$\n){20,}/m

DEMO