我有一个字符串如下:
str = 'chem biochem chem chemi hem achem abcchemde chem\n asd chem\n'
我想用“化学”代替“chem”这个词,同时保留行尾字符('\ n')。我也希望正则表达式不匹配'biochem','chemi','hem','achem'和'abcchemde'等词。我怎么能这样做?
这是我正在使用的但它不起作用:
import re
re.sub(r'[ ^c|c]hem[$ ]', r' chemistry ', str)
谢谢
答案 0 :(得分:5)
使用字边界:
>>> s = 'chem biochem chem chemi hem achem abcchemde chem\n asd chem\n'
>>> import re
>>> re.sub(r'\bchem\b','chemistry',s)
'chemistry biochem chemistry chemi hem achem abcchemde chemistry\n asd chemistry\n'
只是一个注释,不要使用str
作为变量名称,它涵盖了内置str
类型
答案 1 :(得分:2)
您需要使用\b
来匹配字边界:
import re
re.sub(r'\bchem\b', r'chemistry', mystring)
(正如R Nar指出的那样,你应该避免使用str
作为变量名。)
答案 2 :(得分:1)
我刚刚找到答案。感谢@Jota。
超级简单的正则表达式如下:
Msg 213, What value am I supposed to use for your 8 other columns