Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python re regex找到上半部分,但保留下半部分_Python_Regex - Fatal编程技术网

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',)