如何在正则表达式匹配之间获取字符串值?
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})
您好,我需要拆分并从文本中获取以下字段:
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})