re.sub贪婪的人物

时间:2013-01-21 16:33:52

标签: python regex string

我想删除以"\"开头的字符串中的文字,例如:

 \xf, \africa\87, \ckat\x70, ...

有没有办法在re.sub中使用贪婪的字符?

e.g:

line = re.sub("[\.*]", "", line)

谢谢!

编辑: 输入示例:

" lorem ipsum \xe2\x80\x9csianhill7 lorem ipsum"

输出:

" lorem ipsum lorem ipsum"

3 个答案:

答案 0 :(得分:3)

如果我理解你的问题,你想从你的句子中删除所有非ascii前缀单词

您可以通过single pass LCordinal matchfilter轻松完成,而无需使用regex

>>> data = " lorem ipsum \xe2\x80\x9csianhill7 lorem ipsum"
>>> ' '.join(e for e in data.split() if 31 < ord(e[0]) < 127)
'lorem ipsum lorem ipsum'

答案 1 :(得分:1)

要匹配的表达式是:

[\b\\][\w]+,?

使用lorem ipsum的输入文本,上面的表达式只匹配您要删除的内部单词:)

example rubular

我添加了一些其他正则表达式以匹配字符串中的,,并在*

后使用\ 0或更多
[\b\\][\w.,]*

another example

答案 2 :(得分:1)

regex = re.compile(r"""
                    \\\S+\s*
                    """, re.VERBOSE)
line = r" lorem ipsum \xe2\x80\x9csianhill7 lorem ipsum"
replaced = regex.sub("", line)

请注意,您需要告诉python将'\'视为常规字符而不是转义字符。这是通过在字符串前面添加r来完成的。

我还假设您要删除所有以'\'开头的文本,包括下一个空白字符。