如何使用正则表达式获取关键字前后的特定内容

How can get specific content before and after a Key word using Regex

我有数据:


P.C 115 P.B 372 第 2 页,共 2 页

订阅号123456
服务详情账单期
SingleBill 教育计划-学校学院 500Mb 500MO 从 01/11/2021 到 30/11/2021
静态 IP 1 从 01/11/2021 到 30/11/2021
仅限本地从 01/11/2021 到 30/11/2021
固网供应从 01/11/2021 到 30/11/2021
折扣
静态 IP 100% 租金折扣

订阅号763848
服务详情账单期
SingleBill Educ 计划-Schools College 300Mb 200AB 从 01/11/2021 到 30/11/2021
固网供应从 01/11/2021 到 30/11/2021


我想获取每个订阅者的“订阅者编号”和相应的“折扣”,其中“折扣”可用。 有没有可能使用正则表达式的方法。

我在 UiPath 中使用 PDF 活动来读取 PDF 中的文本。

'Read PDF' activity 正在返回一个 String

然后,我正在尝试编写正则表达式来获取 Subscriber NumberDiscount description,其中 Discount 符合条件使用 look ahead 和 look在正则表达式中落后。

我正在尝试 (?<=Subscriber Number)(.*)(?=\n),我能够捕获 Subscriber Number,但不能捕获 Subscriber Number 和换行符之间的文本。

您可以使用

捕获这两个值
(?m)^Subscriber\s+Number\s+(\d+)(?:\r?\n(?!Discounts).+)*\r?\nDiscounts\s+(.+)

regex demo详情:

  • (?m)^ - 行首
  • Subscriber\s+Number\s+ - Subscriber,一个或多个空格,Number,一个或多个空格
  • (\d+) - 第 1 组:一个或多个数字
  • (?:\r?\n(?!Discounts).+)* - 任意零次或多次重复
    • \r?\n - 一个可选的回车 return 然后一个换行符 char
    • (?!Discounts).+ - 不以 Discounts
    • 开头的非空行
  • \r?\n - 一个可选的回车 return 然后一个换行符 char
  • Discounts - Discounts 字符串
  • \s+ - 一个或多个空格
  • (.+) - 第 2 组:换行字符以外的任何一个或多个字符。