我一直在阅读这篇文章在正则表达式中仅返回具有 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})?)
如果您使用评论中提到的 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 正则表达式演示