如何在正则表达式匹配之间获取字符串值?

时间:2017-09-28 02:08:22

标签: regex assertion lookahead

您好我需要拆分并从文本中获取以下字段:

08 SET
Paypal *Dibp    370,34
08 SET
IOF de "Paypal *Dibp"   23,63
12 SET
Pagamento recebido  -4.151,76

对于我需要提取的每个条目:

(日月)(交易描述)(+或+数值)

我尝试使用前瞻性断言正则表达式[1],寻找','但是,我不知道如何回顾并匹配数字。

[1] ^(\ d \ d \ s。)\ n(。)(?=,)(?< =)

2 个答案:

答案 0 :(得分:0)

你有一个良好的开端。我认为你实际上可以匹配它而不使用前瞻:

^(\d\d \w+)\n(.*)\s+(-?[\d,\.]+)$
    第一组parens中的
  • \d\d \w+将匹配日期和月份。
  • 第二组parens中的
  • .*将与描述匹配。
  • \s+将匹配说明与金额之间的空格。
  • -?[\d,\.]+将匹配正数或负数。
  • $匹配一行的结尾。

使用此表达式,您的日期和月份将在$1$2中的说明和$3中的金额。

答案 1 :(得分:0)

最后我得到的东西正在解决我的问题。没有一点优雅,但似乎它的工作:

^(\d\d\s.*)\n(.*)(\s-{0,1}\d{1,3}[,.]\d{2,3},{0,1}\d{0,2})