我有一个文件,有多行。我需要一个正则表达式,找到所有的组,包含一个特定的字符串多次出现。如果该文件有:
启动
中间
随机
中间
结束
启动
中间
随机
结束
启动
中间
随机
中间
结束
我希望正则表达式只匹配粗体的行,作为MIDDLE出现多次的单独组:
**开始
中间
随机
中间
结束**
启动
中间
随机
结束开始
中间
随机
中间
结束
我已经尝试了这个和几个变化,但它不匹配的群体,我需要的。
(START(?:\nMIDDLE){2,}(?:\nMIDDLE)*\nEND)
(START\*STUFF~(?:\nMIDDLE\*STUFF~){2,}(?:\nMIDDLE\*STUFF~)*\nEND\*STUFF~)
2条答案
按热度按时间7vhp5slm1#
使用两个表达式:
参见a demo on ideone.com。
ryevplcw2#
您可以匹配正则表达式
RE.M
。Demo
正则表达式可以分解如下。
如果需要匹配Windows(使用
"\r\n"
作为行终止符)生成的字符串,请将正则表达式中的每个\n
示例更改为\r?\n
。请注意,可以通过更改
到 * 贪婪量词 *
比较
(?:(?!END\n)
(703步,0.8ms)与(?:(?!(?:END|MIDDLE)\n)
(511步,0.2ms)的步骤数和执行时间。