使用正则表达式从字符串中排除/包含总计

问题描述 投票:0回答:1

我一直在阅读这篇文章在正则表达式中仅返回具有 OR 条件的一组以了解如何在匹配中仅获取一组。不知怎的,这对我的模式不起作用。

这里是使用的字符串:

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

演示

正则表达式

(?!<=[tT]otaa?l\s*?.*?)([€$]\s*\d+(?:[,.]\d{0,2})?)
regex regex-lookarounds regex-group uipath positive-lookahead
1个回答
0
投票

如果您使用评论中提到的 UIPath,您可以使用:

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

模式匹配:

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

查看 .NET 正则表达式演示

为了也匹配

 inclusief BTW 
 exclusief BTW 
部分,更具体的正则表达式可以是:

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

查看另一个 .NET 正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.