我有一些文字
>>> import re
>>> text = 'wo__RF**81@t=(181,810)'
,我想用正则表达式显式地将'wo__RF'
部分替换为''
。此模式:
>>> pattern = '\A([\w]+)[@+-/*]*'
将匹配并拔出要删除的字符
>>> re.findall(pattern, text)
Out[6]: ['wo__RF']
但是在使用re.sub
时包括尾随运算符
>>> re.sub(pattern, '', text)
Out[7]: '81@t=(181,810)'
我如何使输出看起来像这样?
Out[7]: '**81@t=(181,810)'
----编辑----
将模式修改为:
>>> pattern = '\A([\w]+)[@+-/*]*'
产生相同的输出
Out[7]: '81@t=(181,810)'
----编辑2 ----
删除捕获组
>>> pattern = '\A[\w]+[@+/*-]*'
>>> re.sub(pattern, '', text)
Out[11]: '81@t=(181,810)'
答案 0 :(得分:0)
使用{{3}}匹配部分字符串而不替换它。
pattern = r'\A\w+(?=[@+\-/*])'
删除比赛时不需要捕获组;如果您需要将部分输入文本复制到结果中,则需要使用此选项。您也不需要[]
周围的\w
。并且您应该删除*
之后的[@+\-/*]
,因为您需要其中一个字符。
在创建正则表达式时,通常应使用原始字符串,以免将regexp转义序列与Python转义序列混淆。并且您应该在字符集中转义-
,否则它将用于创建一系列字符。