正则表达式 如何匹配单词不会跟在其他字符之后

Ken*_*tov 4 regex

我想将mm单元替换为cm代码中的单元。如果使用大量此类替代产品,我会使用regexp

我做了这样的表达:

(?!a-zA-Z)mm(?!a-zA-Z)
Run Code Online (Sandbox Code Playgroud)

但它仍然像匹配的话summagammadummy

如何正确组成正则表达式?

Wik*_*żew 5

使用字符类,并将第一个(?!...)前瞻更改为后瞻:

(?<![a-zA-Z])mm(?![a-zA-Z])
^^^^^^^^^^^^^   ^^^^^^^^^^^ 
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

模式匹配:

  • (?<![a-zA-Z])- 如果当前位置的左侧紧跟着一个ASCII字母,则负向后搜索将使匹配失败
  • mm -文字子串
  • (?![a-zA-Z])- 如果当前位置的右边紧跟着一个ASCII字母,则负匹配将使匹配失败

注意:如果需要使您的模式支持Unicode,请替换[a-zA-Z][^\W\d_]re.U如果使用的是Python 2.x ,请使用flag)。