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

How to get string values between a regex match?

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

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(.)(?=,)(?<=)

你有一个好的开始。我认为您实际上可以在不使用前瞻的情况下匹配所有内容:

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

使用此表达式,您的日期和月份将在 </code> 中,说明将在 <code> 中,金额将在 中。

终于找到了解决我问题的方法。不太优雅,但似乎有效:

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