正则表达式匹配另一个单词第一次出现的第二个单词

时间:2014-08-19 10:53:22

标签: java javascript regex

我遇到需要解析以下内容的情况

Some Text
Some Text
SUB-TOTAL          :    $0.90 
Some Text          :    $0.79-
SUB-TOTAL          :    $0.11 
TAX                :    $0.05 
TOTAL      $0.16 

如果Tax不存在,我需要解析到最后'SUB-TOTAL',否则它必须解析到TAX 我不确定我在正则表达式中做错了什么 *。?(?=(TAX |(SUB-TOTAL。?SUB-TOTAL)))* 由于对正则表达式的经验较少。有人可以帮助我。

提前致谢。

1 个答案:

答案 0 :(得分:0)

要获得包含SUB-TOTAL或TAX及其值的内容,您可以使用:.*(?:(?:SUB-TOTAL|TAX)[^\n]*) ...这是正确的截止日期吗?

编辑好的 - 让我的头受伤...但是如果它存在则获得最后的SUB-TOTAL,否则TAX:

^(?:(?:(?!.*SUB-TOTAL.*).*TAX[^\n]*)|(?:.*SUB-TOTAL[^\n]*))

希望这适用于您的正则表达式引擎!

EDIT2 此版本不会返回SUB-TOTAL / TAX行

^(?:(?:(?!.*SUB-TOTAL.*).*(?=TAX))|(?:.*(?=SUB-TOTAL)))