我试图审查一个肮脏的词。用户可以用*替换一些字符。正则表达式。是否可以匹配(a或b)和(a或c)和(a或d)而不是aaa?
让我们一个字 “狗”,例如(这是不脏的,当然)
- * OG
- d * G
- 做*
- XX的
等
正则表达式看起来像(d|\*)(o|\*)(g|\*)
是否可以匹配上面的所有变体但不是'***'?
我试图审查一个肮脏的词。用户可以用*替换一些字符。正则表达式。是否可以匹配(a或b)和(a或c)和(a或d)而不是aaa?
让我们一个字 “狗”,例如(这是不脏的,当然)
等
正则表达式看起来像(d|\*)(o|\*)(g|\*)
是否可以匹配上面的所有变体但不是'***'?
是,Python有负向前断言。你想匹配[d*][o*][g*]
和(?!\*{3})
:
(?!\*{3})[d*][o*][g*]
有了这个,你还必须添加'(?!d * $)(?!o * $)...' - 这个正则表达式需要太多的例外。 –
您也可以使用这个表达式:
^\w{0,3}\*{0,2}\w{0,3}(?!\*)
当你在技术上并不需要向前看,你的RE将成为,如果你不inconventiently大(' ([d *] [o *] g | [d *] o [g *] | d [o *] [g *]') – 2015-12-02 09:05:41
你怎么知道狗不脏? *快速.... :-P –