正则表达式匹配变量多行
本文关键字:变量 正则表达式 | 更新日期: 2023-09-27 18:32:00
假设我有以下文本,我想提取"数字开头"和"数字结尾"之间的文本,其中有动态的行数,并且其中数字的唯一变化,例如:第一,第二等。我将从中提取数据的每个文件在"数字开头"和"数字结尾"之间都有不同数量的行。如何在不知道数字开头"和"数字结尾"之间的文件中有多少行的情况下编写正则表达式来匹配"数字开头"和"数字结尾"之间的内容?
问候!
This is the first line This is the second line
Start of numbers
This is the first line
This is the second line
This is the third line
This is the ...... line
This is the ninth line
End of numbers
您应该使用 SingleLine
模式,该模式告知 C# 正则表达式.
匹配任何字符(不是除 'n
之外的任何字符)。
var regex = new Regex("Start of numbers(.*)End of numbers",
RegexOptions.IgnoreCase | RegexOptions.Singleline);
您应该能够毫无问题地匹配多行字符串。请记住在('n
新行)中添加正确的字符。
string pattern = "Start of numbers(.|'n)*End of numbers";
Match m = Regex.Matches(input, pattern);
如果您可以考虑带有隐藏字符的字符串,这会更容易。
Start of numbers'n'nThis is the first line'nThis is the second line'n ...
/(?<=Start of numbers).*(?=End of numbers)/s
您需要启用点标志。
http://regexr.com?30oaj
像这样:
^(start)([''s'''d''w]*)(end)$
你得到第二组。如果您愿意,您甚至可以为组命名。所以关键是你在一个字符串中读取整个东西,然后从中得到正则表达式结果。
编辑:
必须编辑一下。如果您的匹配项可以在中间的某个地方,请删除开始 (^) 和结束 ($) 字符。(开始)([''s'''d''w]*)(完)
请注意,这将只留下您想要获得的行。然后处理这些行。