使用regexp从字符串中排除/包含总计

pwuypxnk  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(100)

我一直在阅读这篇文章Return only one group with OR condition in Regex,以了解如何在匹配中只得到一个组。不知何故,这对我的模式不起作用。

  • 这里是使用的字符串:*
Ledigingen 4 lediging € 32,48 € 50,92 21,00 %
van 01-01-2019 t/m 31-01-2019
Huur 1 Maand € 8,63 € 8,63 21,00 %
toeslag over € 50,42 (21% BTW) € 2,76 21,00 %
(WHITESPACE) Totaal exclusief BTW € 50,18 
BTW hoog (21%) € 50,18 € 50,89 
totaal inclusief BTW € 70,07

字符串
目前它提取每个发生的金额。有没有一种方法可以只得到值后跟[Tt]otaa?l excl/incl BTW
我想我一直在使用积极/消极的前瞻错误。
给定输入的期望输出为:

€ 50,18
€ 70,07


DEMO

RegEx

(?!<=[tT]otaa?l\s*?.*?)([€$]\s*\d+(?:[,.]\d{0,2})?)

gcuhipw9

gcuhipw91#

如果您正在使用注解中提到的UIPath,则可以使用:用途:

(?<=\b[Tt]otaa?l\s+(?:ex|in)cl[^€$]*)[€$]\s*\d+(?:[,.]\d{1,2})?\b

字符串
模式匹配:

  • (?<=正向后看,Assert左边是
  • \b[Tt]otaa?l\s+(?:ex|in)cl匹配单词totaalTotaal后跟exclincl
  • [^€$]*匹配$以外的可选字符
  • )关闭lookbehindAssert
  • [€$]匹配$之一
  • \s*匹配可选的空白字符
  • \d+(?:[,.]\d{1,2})?将1+位与可选小数部分匹配
  • \b防止部分字匹配的字边界

参见.NET regex demo
为了匹配inclusief BTWexclusief BTW部分,更具体的正则表达式可以是:

(?<=\b[Tt]otaa?l\s+(?:ex|in)clusief\s+BTW\s+)[€$]\s*\d+(?:[,.]\d{1,2})?\b


另见.NET regex demo

相关问题