替换组内换行符的 REGEX 策略

REGEX strategy to replace line breaks inside group

我正在尝试仅用一个正则表达式一次性替换,但我认为这根本不可能。我正在使用 RegexBuddy,但我总是得到一个灾难性的结果,无法计算表达式。

对于本文:

3 bla bla! !

4 yep yep! ?

FROM HERE

5 something randdom here!

6 perhaps some HTML there

TO HERE

7 what ever you like over here

8 and that's all folks!enter code here

我想找到一个用其他东西替换换行符的正则表达式,比方说 $$,但仅限于“从这里”“到这里”部分。所以基本上最终结果是这样的:

3 bla bla! !

4 yep yep! ?

FROM HERE$$
$$
5 something randdom here!$$
$$
6 perhaps some HTML there$$
$$
TO HERE

7 what ever you like over here

8 and that's all folks!

我有这个表情

((FROM HERE))((.*)(\n))+(TO HERE)

但到目前为止,我一直在尝试用其他东西替换 \n 组。我过去做过类似的事情,所以我想说这应该是一次性的。

如果这在正则表达式中是不可能的,我会简单地创建一个 C# 控制台应用程序,首先将该文本转换为一个字符串,然后用 $$ 替换每个 \n,然后放回去。那应该不难。

如果您使用的是 .NET,一种选择是

(?s)(?<=^FROM HERE\b.*?)\r?\n\r?\n(?=.*?^TO HERE\b)
  • (?s) 行内修饰符,点匹配换行符
  • (?<=^FROM HERE\b.*?) 在行首左侧断言 FROM HERE
  • \r?\n\r?\n 匹配 2 个换行符
  • (?=.*?^TO HERE\b) 在行首右侧断言 TO HERE

在替换中使用(双转义$$

\n$$$$\n

看到一个.NET regex demo and a C# demo.