编译格式中的文本行,
26 Jan The Gym Debit Card Transaction £656.40
字符串
我能够编译日期,交易的价值和交易的类型,但不确定如何编译描述(健身房),因为它的长度和空间取决于每行代码。
company_re = re.compile(r'[^\d+ \w{3}+\(Debit Card Transaction Mobile|Online Transacti…|Direct Debit|Standing Order|Automated Credit|)\£\d+.\d\d]')
型
这是我最后一次尝试,我的想法是拒绝所有固定模式的东西,但似乎不起作用。
2条答案
按热度按时间dkqlctbz1#
你可以试试(Regex101):
注意:我使用了详细标志
(?x)
来使模式更具可读性字符串
印刷品:
型
tag5nh1u2#
您当前方法的问题:
[^...]
。这完全破坏了RegEx,没有任何意义。.
;你的RegEx会匹配值的数字之间的任何字符下面是我建议的RegEx:
(\d+\s+\w{3}+)\s+(.+?)\s+(£\d+\.\d\d)
(\d+\s+\w{3}+)
:匹配并捕获日期,与您的RegEx中相同\s+(.+?)\s+
:匹配并捕获一个空格分隔的“中间部分”(描述),使其尽可能短(我们不希望空格进入描述)(£\d+\.\d\d)
:匹配并捕获以英镑为单位的交易的尾随值确保每行使用
re.fullmatch
或使用^
和$
锚点。