C# (.net) RegEx.Match 换行符之间的子字符串 - 使用换行符作为正先行限制

C# (.net) RegEx.Match Substring between newlines - using newline as positive lookahead limit

我一直在修补 RegEx 并取得了一些不错的结果,我想继续使用它。

现在我一直在寻找一个设置在两个换行符之间的字符串。这是示例目标文本(请注意,这是数千种可能的文本之一):

Substance information in Wikipedia
FORMULA
CH2O
Grafik
Molar mass: 30,03 g/mol

目标是"CH2O"。

我用 RegexOptions.Singleline 尝试了 (?<=FORMULA).*(?=Grafik),它在 FORMULA 之后开始,但一直向下并忽略了 Grafik

我在没有单行的情况下尝试过,但它 returns 什么都没有,因为 .\n 处停止。因为我想要换行作为限制,所以下面没有单行。

我得到的最接近的是这些:

(?<=FORMULA)[\w\W]+(?=Grafik)
(?<=FORMULA)[\w\W]*(?=Grafik)

但是,如果 Grafik 发生变化,我想跟踪换行符而不是它。

(?<=FORMULA)[\w\W]*(?=\n)(?<=FORMULA)[\w\W]*(?=\r) 由于某种原因仍会匹配 Grafik...

有谁知道使正向超前换行的更好方法吗?

请不要回答任何与 RegEx 无关的问题。

这对你有用吗

(?<=FORMULA\s+)\S+

匹配 FORMULA 之后和新行

之前的所有内容