我需要删除字符串中除'd&g'或'black&jones'之类的符号以外的所有与符号。为此,必须使用正则表达式。我用这个模式r'[a-zA-Z]&[a-zA-Z]'
,但不工作。如有任何帮助或指导,将不胜感激。
假设您想替换除被英文字母包围的与符号以外的所有与符号,则答案如下:
import re
test_str = "d&g &this &mostafa & and h&m and& mostafa&mostafa &this this& d&g"
print(re.sub(r"&(?![a-zA-Z])|(?<![a-zA-Z])&", "", test_str))
# d&g this mostafa and h&m and mostafa&mostafa this this d&g
这里&(?![a-zA-Z])|(?<![a-zA-Z])&
匹配前面没有英文字母或后面没有英文字母的&号:(?!...)
-负向前看,(?<!...)
-负向后看。
如果你想扩展与号周围允许的符号列表-在两个符号类中添加这些符号。例如,如果您想要允许使用数字,请使用[a-zA-Z0-9]
.
找到合适的正则表达式模式。以下是完整的python代码:
import re
text = "d&g &this &mostafa & and h&m and& mostafa&mostafa &this this& d&g"
pattern = r"^&|&$|[^a-z]+&|&[^a-z]+"
cleaned_text = re.sub(pattern, " ", text)
print(cleaned_text)