删除所有出现在regexp行开头的字符串

2024-10-04 09:18:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从字符串的开头删除一组单词。 例如:set = {"aba", "bcd"} 对于字符串"aba bcd aba aba aaa",结果应该是"aaa",对于字符串
"bcd abacaba"结果应该是"abacaba"。你知道吗

我试过了

import re
inp = "lalala bababa qqqq n"
pat = re.compile(r"^([la |ba ]+")

print pat.sub("+", inp)

但输出是

+qqqq n

我不明白,为什么它忽略了所有的表情? 什么是正确的regexp?你知道吗


Tags: 字符串importre单词inpcompilesetpat
3条回答

这可能是你想要的:

In [28]: pat = re.compile(r"^(la |ba )+")

In [29]: pat.sub('+', 'lalala bababa qqqq n')
Out[29]: 'lalala bababa qqqq n'

In [30]: pat.sub('+', 'la ba qqqq n')
Out[30]: '+qqqq n'
inp = "lalala bababa qqqq n"
inp = inp.split()

inp现在是['lalala','bababa','qqqq','n']

所以把最后一部分

inp[-1]

单词aba后跟一个或多个空格的正则表达式是'aba +'
单词bcd后跟一个或多个空格的正则表达式是'bcd +'
其中任何一个的正则表达式都是'(aba +|bcd +)'
重复一次或多次是'(aba +|bcd +)+'。你知道吗

将其替换为空字符串:

re.sub(r'(aba +|bcd +)+', '', 'aba bcd aba aba aaa')

强制搜索的字符串位于开头:

re.sub(r'^(aba +|bcd +)+', '', 'aba bcd aba aba aaa')

相关问题 更多 >