我想要一個正則表達式,它將返回列表中僅包含輔音且不包含特殊字符的所有單詞。正則表達式:如何一次過濾兩件事
下面的Python代碼的工作:
import re
words = ["xkcd", "word", "xml-"]
consonants_only = [x for x in words
if (re.search("^[^aeiou]+$", x)
and re.search("^[a-z]+$", x))]
print consonants_only
這準確地返回[ 'XKCD']
我的問題是:可以這樣很好地與一個正則表達式做了什麼?我正在尋找的是一種通用的方式來同時過濾[^ aeiou]和[a-z]。
使用'[^ aeiou]'檢查元音的缺失不是更容易嗎? – 2014-09-01 04:15:19
@JayanthKoushik在這種情況下,可能會有其他字符,如'xml-'字符串 - 正如OP所說的那樣不匹配。如果你想用否定的斷言 - 你可能會發現@ kev的答案是正確的。 – alecxe 2014-09-01 04:20:03
這種方式更好,因爲它只需要解析字符串一次,並且模式在第一個禁止字符時會失敗。 – 2014-09-01 05:18:37