Python 正则表达式:删除字母之间非撇号的所有特殊字符
我有这样一个字符串:Python 正则表达式:删除字母之间非撇号的所有特殊字符,python,regex,Python,Regex,我有这样一个字符串: s = "i'm sorry, sir, but this is a 'gluten-free' restaurant. we don't serve bread." 我试图用re.sub来替换所有字母之间没有撇号的特殊字符,这样“无麸质”就变成了无麸质,我会保持原样 我试过这个: import re s = re.sub('[^[a-z]+\'?[a-z]+]', ' ', s) 我想说的是,用0或一个撇号,后面跟着一个或多个带空格的字母,来替换
s = "i'm sorry, sir, but this is a 'gluten-free' restaurant. we don't serve bread."
我试图用re.sub来替换所有字母之间没有撇号的特殊字符,这样“无麸质”就变成了无麸质,我会保持原样
我试过这个:
import re
s = re.sub('[^[a-z]+\'?[a-z]+]', ' ', s)
我想说的是,用0或一个撇号,后面跟着一个或多个带空格的字母,来替换任何不遵循一个或多个字母模式的字母
这将返回相同的字符串:
i'm sorry, sir, but this is a 'gluten-free' restaurant. we don't serve bread.
我希望:
i'm sorry sir but this is a gluten free restaurant we don't serve bread
您可以将此正则表达式与嵌套的lookahead+lookahead一起使用:
>>> s = "i'm sorry, sir, but this is a 'gluten-free' restaurant. we don't serve bread."
>>> print ( re.sub(r"(?!(?<=[a-z])'[a-z])[^\w\s]", ' ', s, flags=re.I) )
i'm sorry sir but this is a gluten free restaurant we don't serve bread
>>s=“对不起,先生,这是一家‘无麸质’餐厅。我们不供应面包。”
>>>印刷品(re.sub(r)(?!)?