正则表达式用不同的字符串替换[eEzZ_]

时间:2014-01-14 00:45:54

标签: regex

由于这是不成熟的,我服务器上的人喜欢说“ez”,这对于玩我的服务器主机游戏来说是一个相当大的侮辱。我尝试编写一个正则表达式,如下所示,在他们的聊天消息和各种组合中替换文本“ez”,但它失败了,失败了很多:

[eEzZ_ ]+

它会对“是”之类的东西或其中有空格的东西失误。我试图用仅包含e,z,空格和_的段来替换消息,我猜这可能会像“咬斑马”这样的事情......也许还有一些更聪明的方法来防止这种情况?

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您拥有的是与e,E,z,Z,_或空格中的任何一个或多个匹配的字符类。我想你可能只想在ez或更准确\bez\b(使用单词边界)进行不区分大小写的匹配。下划线/空间的事情对我来说并不那么清楚。也许\be[_ ]*z\b

答案 1 :(得分:4)

这是我在你的案例中使用的正则表达式:

(?:e|E)[_\s\.]*?[zZ]+

<强>故障:

  1. 非捕获组允许我们在起始字符e或E (?:e|E)
  2. 之间切换
  3. 我们知道空格或下划线将在中间,所以在那里放置一个重复的,懒惰的角色类;以防它们省略那部分。 [_\s\.]*?
  4. 通过允许无限量的Z [zZ]+
  5. 来完成表达式

    http://regex101.com/r/sQ8wW2