考虑一个由 组成的多行字符串N lines
,如下所示:
Line 1 text
Line 2 text
Line 3 text
...
Line n-1 text
Line n text
anchor=value
Line n+2 text
Line n+3 text
Line n+4 text
...
Line N text
密钥不会出现在任何行内,anchor
并且在锚点之前以及其后面的=
标志周围可能有空格。
我需要一个将上述字符串分成 3 组的正则表达式:
- 1号线至n号线(含)
- 锚线(分割点)
- 第 n+2 行至第 N 行(含)
我最接近解决方案的是
(?s)^(?:(?!anchor\s*=\s*).)+?\r|\nanchor\s*=\s*([^\r\n]+)(?:\r|\n)(.*)
但上面的正则表达式包括第一个匹配组中的整个文本,并按预期填充剩余的 2 个组。
另一个要求是正则表达式必须尽可能快,因为它将应用于大量数据。另请注意,在此用例中,通过单个正则表达式进行处理是唯一的选择。
有任何想法吗?