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

用于匹配多行文本的正则表达式

莫乐
2023-03-14

我有一个多行文本,我想从这里匹配单词“Description Amount”和以逗号作为分隔符的随机数字之间的文本。
示例输入:

Description Amount
Being the Amount received from above branch in favour of SAF SAF
FOR THE MONTH OF JANUARY-2021.
3,24,500.00

预期产出:

Being the Amount received from above branch in favour of SAF SAF
FOR THE MONTH OF JANUARY-2021.

输入示例:

Description Amount
Being the Amount received from above branch in favour of SD SAF
VALUE SAF OF CHAPAINAWABGANJ AREA FOR THE MONTH OF
JANUARY 2021
9,18,049.00

预期产出:

Being the Amount received from above branch in favour of SD SAF
VALUE SAF OF CHAPAINAWABGANJ AREA FOR THE MONTH OF
JANUARY 2021

输入包含多个换行符的变量。我使用了以下正则表达式:

(?<=Description Amount\s)(.*\n.*)

但还需要改进。谢谢你。

共有2个答案

耿永寿
2023-03-14

您可以尝试使用这个regex来避免对lookahead进行多次断言:

(?<=Description Amount\n)(?:.*\n)+?(?=\d+,\d)

正则表达式演示

正则表达式详细信息:

  • (?<=描述金额\n):断言当前位置之前的一行中有描述金额
  • (?:.*\n)+?:匹配任意文本的1行或多行
  • (?=\d+,\d):断言当前位置前面有数字,数字
红经亘
2023-03-14

如果数字位于行的开头,则可以使用

(?<=Description Amount\n)(?:(?!\d+,\d).*\n)*

模式匹配

  • (?<=描述金额\n)
  • (?:非捕获组
    • (?!\d+,\d).*\n如果不以数字、逗号和数字开头,则匹配整行

    正则表达式演示

    如果至少应该有一行,则可以将组的量词更改为+

    (?<=Description Amount\n)(?:(?!\d+,\d).*\n)+
    

    正则表达式演示

 类似资料:
  • 问题内容: 我正在尝试使用Java匹配多行文本。当我将类与修饰符一起使用时,我可以匹配,但不能. 使用和使用相同的模式似乎无效。 我确定我缺少什么,但不知道是什么。正则表达式不是很好。 这就是我尝试过的 问题答案: 首先,你在错误的假设下使用修饰符。 或告诉Java接受锚点并在每行的开头和结尾进行匹配(否则,它们仅在整个字符串的开头/结尾进行匹配)。 或告诉Java也允许点与换行符匹配。 其次,在

  • 问题内容: 我有一个看起来像这样的文件: 该文件包含以开头和结尾的块。请注意,()之间的行数可以不同。我想在第一行中打印所有带有字符串“ test”的块(例如此处的“ SF:/ home / developer / test / resources / …”)。对于此示例,我想要的输出将是: 我想在 Linux 环境中执行此操作。 我的第一个尝试是使用“ sed”命令执行此操作,但是经过一些研究,

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

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

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

  • 问题内容: 是的,您没看错。我需要能够从正则表达式 生成 随机文本的内容。因此,文本应该是随机的,但要与正则表达式匹配。看来它不存在,但我可能是错的。 仅举一个例子:该库将能够以“ ”作为输入,并生成诸如以下示例: abc abbbc bac 等等 更新:我自己创建了一些东西:Xeger。查看http://code.google.com/p/xeger/。 问题答案: 我刚刚创建了一个库来进行此操