【发布时间】:2017-04-30 21:38:51
【问题描述】:
文字:
应付总额(包括 GST 7.68 美元)84.55 美元
正则表达式:
Total Amount.?\s*(?!\(inc\))?[^\$]*(\$\s?[0-9,]+(\.[0-9]{1,})?)
https://regex101.com/r/YXr023/1
但它匹配找到的第一个数量$7.68。如何忽略括号内的任何内容,使其匹配$84.55?
将(?![^\(]*\)) 附加到末尾完全忽略了该行,这是我不想要的。
【问题讨论】:
-
是否只有一组括号?括号外(之后)总是有一个数字吗?您的问题正则表达式和链接中的正则表达式不同是否重要? regex101.com/r/YXr023/3 呢?而不是试图让它全部非贪婪,只是贪婪匹配到最后一个 $ ... ?
-
是的,只有一组支架。描述包括忽略无效的括号部分。但你的似乎有效!
-
@TessellatingHeckler .. 除非金额在几行之后(OCR 错误)。示例:pastebin.com/ikL3Jvt0
-
换句话说,您正在寻找所需模式的第二次出现?检查Match at every second occurrence 和How to find 3rd occurrence of a pattern in a line
-
@BehradKhodayar 可选,并非总是如此。
标签: regex