Python re regex找到上半部分,但保留下半部分
伙计们,我在努力寻找这个问题,因为我觉得简单描述一下很奇怪 我试图从银行对账单中剔除不必要的文字,例如:Python re regex找到上半部分,但保留下半部分,python,regex,Python,Regex,伙计们,我在努力寻找这个问题,因为我觉得简单描述一下很奇怪 我试图从银行对账单中剔除不必要的文字,例如: source: TFR 09343-9724 to their bank-Client Company Invoice 238923 output: Client Company Invoice 238923 我认为最简单的方法是搜索“TFR 09343-9724到他们的银行-”并将其丢弃,保留剩余部分。当客户端引用更改时,我无法将其设置为搜索模式。。。虽然现在回想起来,我想正则表达式可以
source: TFR 09343-9724 to their bank-Client Company Invoice 238923
output: Client Company Invoice 238923
我认为最简单的方法是搜索“TFR 09343-9724到他们的银行-”并将其丢弃,保留剩余部分。当客户端引用更改时,我无法将其设置为搜索模式。。。虽然现在回想起来,我想正则表达式可以很容易地处理不断变化的发票号
我会看看现在是否能做到这一点,但我仍然好奇如何使用“re”来实现我的原始想法。使用下面的正则表达式并通过
re.sub
函数删除匹配的字符串
TFR 09343-9724.*?bank-
或
如果您不知道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'
您可以只捕获相关行的其余部分:
请注意第二个
*
,后面是行尾字符$
-这意味着“捕获行中其余部分的所有内容”(请参阅)。谢谢,我(似乎也是)在使用单引号和双引号之间遇到了一些问题。你能很容易地为我做出区分吗?区分?对不起,我没明白你的意思。你能给我解释清楚吗?我用的是(“一些文本”)而不是(“一些文本”),这似乎改变了我的成功/失败。
>>> 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'
>>> 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',)