我想,以取代'.net'在'i like .net'用.NET.预期产量:'i like .NET'.
同样'c++'在'i like c++'用Cpp.预期产量:'i like Cpp'.
有更多特殊字符的情况,如'c ++'
import re
regex_match = re.compile(r'\bnet\b')
print(regex_match.sub('NET', 'I like .net'))
# output I like .NET Which works but I need boundary match also.
regex_match = re.compile(r'\b.net\b')
print(regex_match.sub('NET', 'I like .net'))
# output I like .net
regex_match = re.compile(r'\b\.net\b')
print(regex_match.sub('NET', 'I like .net'))
# output I like .net
regex_match = re.compile(r'\b' + re.escape('.net') + '\b')
print(regex_match.sub('NET', 'I like .net'))
# output I like .net
regex_match = re.compile(r'\b' + re.escape('.net') + '\b')
print(regex_match.sub('NET', 'I like \.net'))
# output I like \.net
print(re.sub(r'\b' + re.escape('.net') + '\b', '.NET', 'I like .net'))
# output I like .net
regex_match = re.compile(r'\b' + re.escape('.net') + '\b')
print(regex_match.sub('NET', re.escape('I like .net')))
# output I\ like\ \.net
Run Code Online (Sandbox Code Playgroud)
更新:
regex_match = re.compile(r'\b' + re.escape('c++') + '\b')
print(regex_match.sub('cpp', 'I like c++'))
# output `I like c++` expected `I like cpp`
Run Code Online (Sandbox Code Playgroud)
我在regex replace上经历了很多stackoverflow问题.在任何地方它建议逃跑'.',我试过,你可以看到上面.仍然没有用.任何帮助深表感谢.
不要\b在dot之前放置(单词边界),因为dot不是单词字符.
您可以使用:
>>> regex_match = re.compile(r'\.net\b')
>>> print(regex_match.sub('.NET', 'I like .net'))
I like .NET
Run Code Online (Sandbox Code Playgroud)
编辑:
根据您的评论,您可以使用此正则表达式:
>>> print(re.sub(r'(^|\s)\.net(?=\s|$)', r'\1.NET', 'I like .net'))
I like .NET
>>> print(re.sub(r'(^|\s)\.net(?=\s|$)', r'\1.NET', 'I like.net'))
I like.net
Run Code Online (Sandbox Code Playgroud)