正则表达式。是否可以匹配(a或b)和(a或c)和(a或d)而不是aaa?

时间:2015-12-02 09:00:30

标签: regex python-3.x

我试图审查一个脏话。用户可以用*。

替换一些字符

让我们说一句话"狗",例如(这当然不脏)

  1. * OG
  2. d * G
  3. 做*
  4. d **
  5. 等等

    正则表达式看起来像(d|\*)(o|\*)(g|\*)

    是否可以匹配上述所有变体,但不能匹配' ***'?

3 个答案:

答案 0 :(得分:4)

是的,Python有前瞻性断言。您想要匹配[d*][o*][g*](?!\*{3})

(?!\*{3})[d*][o*][g*]

答案 1 :(得分:1)

^(?!\**$)[dog*]+$

您可以使用lookahead尝试这样的操作。请参阅演示。

https://regex101.com/r/hE4jH0/23

答案 2 :(得分:0)

您也可以使用此正则表达式:

^\w{0,3}\*{0,2}\w{0,3}(?!\*)