我想删除以"\"
开头的字符串中的文字,例如:
\xf, \africa\87, \ckat\x70, ...
有没有办法在re.sub
中使用贪婪的字符?
e.g:
line = re.sub("[\.*]", "", line)
谢谢!
编辑: 输入示例:
" lorem ipsum \xe2\x80\x9csianhill7 lorem ipsum"
输出:
" lorem ipsum lorem ipsum"
答案 0 :(得分:3)
如果我理解你的问题,你想从你的句子中删除所有非ascii前缀单词
您可以通过single pass LC
与ordinal match
和filter
轻松完成,而无需使用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的输入文本,上面的表达式只匹配您要删除的内部单词:)
我添加了一些其他正则表达式以匹配字符串中的,
,并在*
\
0或更多
[\b\\][\w.,]*
答案 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来完成的。
我还假设您要删除所有以'\'开头的文本,包括下一个空白字符。