爲什麼這不起作用?Python正則表達式:爲什麼這不起作用?
re.sub('\\b[[email protected]](\\W|[[email protected]])*[s5$](\\W|[s5$])*[s5$](\\W|[s5$])*($|\\W)', '*', '@ss')
我不明白爲什麼@ss
不*
取代。同樣,@55
不會被替換。
這些替代:A55,A5S,AS5,屁股
謝謝!
爲什麼這不起作用?Python正則表達式:爲什麼這不起作用?
re.sub('\\b[[email protected]](\\W|[[email protected]])*[s5$](\\W|[s5$])*[s5$](\\W|[s5$])*($|\\W)', '*', '@ss')
我不明白爲什麼@ss
不*
取代。同樣,@55
不會被替換。
這些替代:A55,A5S,AS5,屁股
謝謝!
這是因爲@
是不發一言的性格,因此第一\b
不匹配。
這是我的建議:
re.sub('(\\ba|@)(\\W|[[email protected]])*[s5$](\\W|[s5$])*[s5$](\\W|[s5$])*($|\\W)', '*', '@ss')
(與(\ba|@)
更換\b[[email protected]]
)
我明白了。謝謝 – 2012-08-16 23:34:09
第一部分周圍沒有一對括號。試試這個:
re.sub('(\\b[[email protected]])*(\\W|[[email protected]])*[s5$](\\W|[s5$])*[s5$](\\W|[s5$])*($|\\W)', '*', '@ss')
如果你想一種「褻瀆」的檢查 - 我想借此邏輯了正則表達式。
look_alike = {'@': 'A', '$': 'S'}
test_string = ''.join(look_alike.get(c, c) for c in your_string.upper()) # also look at `string.translate`
然後if 'ASS' in test_string
- 或者與使用re的詞邊界類似。
只是澄清s看起來像5和$,'a'看起來像@ – 2012-08-16 23:27:57
不會're.sub(r'[a @] [s5 $] {2}','*','@ass ')'要簡單得多,給出相同的結果,還是我錯過了什麼? – BrtH 2012-08-16 23:36:29
是的,這將工作。但我寫了一個普通的正則表達式,可以用於所有的東西:) – 2012-08-16 23:40:32