我試圖審查一個骯髒的詞。用戶可以用*替換一些字符。正則表達式。是否可以匹配(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 –