伙计们,在试图搜索这个问题时尽力而为,因为我觉得简单描述很奇怪......
我试图从银行对账单中删除不必要的文本,例如:
source: TFR 09343-9724 to their bank-Client Company Invoice 238923
output: Client Company Invoice 238923
我认为最简单的方法是搜索" TFR 09343-9724到他们的银行 - "和垃圾,保持其余部分。我不能将其设置为搜索模式,因为客户端引用会发生变化...虽然回想起来我觉得正则表达式可以很容易地处理更改的发票号...
我现在看看自己能否做到这一点,但我仍然很好奇我将如何使用" re"实现我原来的想法。
答案 0 :(得分:1)
使用以下正则表达式并通过re.sub
函数
TFR 09343-9724.*?bank-
>>> import re
>>> m = re.sub(r'TFR 09343-9724.*?bank-', r'', 'TFR 09343-9724 to their bank-Client Company Invoice 238923')
>>> m
'Client Company Invoice 238923'
OR
如果您不知道TFR
>>> m = re.sub(r'\bTFR \d+-\d+\b.*?bank-', r'', 'TFR 09343-9724 to their bank-Client Company Invoice 238923')
>>> m
'Client Company Invoice 238923'
答案 1 :(得分:1)
您可以只捕获相关行的其余部分:
>>> import re
>>> s = """some first line
some other line
TFR 09343-9724 to their bank-Client Company Invoice 238923
a final line"""
>>> re.search(r"^TFR \d{5}-\d{4}.*-(.*)$", s, re.MULTILINE).groups()
('Client Company Invoice 238923',)
请注意第二个.*
周围的括号,然后是行尾字符$
- 这意味着"捕获其余行中的所有内容" (见demo and full explanation here)。