正则表达式匹配单词,同时保留行尾

时间:2015-11-24 16:33:09

标签: regex string python-2.7

我有一个字符串如下:

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)

谢谢

3 个答案:

答案 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