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
之后和新行
之前的所有内容
我一直在修补 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
之后和新行