当前位置: 首页 > 知识库问答 >
问题:

正则表达式匹配变量多行?[重复]

董庆
2023-03-14

假设我有以下文本,我想提取“数字开头”和“数字结尾”之间的文本,其中有动态数量的行,并且其中数字的唯一变化,例如:第一、第二等。我将从中提取数据的每个文件在“数字开头”和“数字结尾”之间都有不同数量的行。如何在不知道数字开头“和”数字结尾“之间的文件中有多少行的情况下编写正则表达式来匹配”数字开头“和”数字结尾“之间的内容?

当做

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

共有3个答案

梁丘成和
2023-03-14
/(?<=Start of numbers).*(?=End of numbers)/s

您需要启用多托尔标志。

http://regexr.com?30oaj

席波娃
2023-03-14

您应该能够毫无问题地匹配多行字符串。只需记住在(\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 ...
贺浩漫
2023-03-14

您应该使用SingleLine模式,它告诉您的C#正则表达式匹配任何字符(除了\n之外的任何字符)。

var regex = new Regex("Start of numbers(.*)End of numbers",
                  RegexOptions.IgnoreCase | RegexOptions.Singleline);
 类似资料:
  • 我希望在我正在解析的包含代码的文本文件中提取特定变量的值。变量名会改变,它在代码中的位置也会改变,但我知道模式,因此我成功地获得了它的值并将其存储在一个名为myVar的变量中。 要获取值,即myVar和等号后引号之间的字符串,即我考虑使用正则表达式如下: 但是我在编译时得到一个错误: 错误:非法转义字符模式q=Pattern.compile(myVar "\= \"(. *)\"" ); 这与将m

  • 问题内容: 我试图创建下面的正则表达式:返回之间的字符串和(或或)从下列字符串RNA: ,让所有的比赛会被发现,包括重叠的。 我尝试了几种正则表达式,最后得到了类似的结果: 您能告诉我我的正则表达式模式中的错误吗? 问题答案: 用一个正则表达式执行此操作实际上是非常困难的,因为大多数用法 都不 希望重叠匹配。但是,您可以通过一些简单的迭代来做到这一点: 虽然,这有一些问题。您希望得到的回报是什么?

  • 我们得到了一些这样的内容:

  • 给定下面的字符串 [NeMo(PROD)]10.10.100.100(EFA-B-3)[博科FC-Switch]传感器:电源#1(SNMP自定义表)关闭(无此名称(SNMP错误#2)) 我尝试获取多个匹配项以提取以下值: 因为我是正则表达式的初学者,所以我试图定义一些“规则”: 提取第一个圆括号内的第一个值,例如PROD 提取第一个闭合方括号和第二个开口圆括号之间的值,例如10.10.100.10

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 在下面的代码中: 结果是: 我希望成为 如何实现? 问题答案: 使匹配器尝试从后者开始下一个扫描。