2013-05-14 68 views
5

有沒有簡單的方法來忽略/遺漏某些字母。問題是找到一個長度爲5個字母但不包含字母b,j,m或n的單詞。正則表達式丟失了某些字母

我可以只指定我想要的字母,例如[a] [c-i] [k-1] [o-2]嗎?這看起來不是很乾淨,我仍然需要指定單詞需要5個字母。所以我想我需要一個/ w和一個{5},但不知道如何組合它。 謝謝。

回答

10

這將選擇所有字符,除了bjmn:

[^bjmn]{5} 

如果你想只小寫字母除了那些你列出:

[c-ik-lo-za]{5} 

如果你不想5個字母詞那是長字的一部分,加字邊界檢查:

\b[c-ik-lo-za]{5}\b 
+2

OP希望除了'bjmn',沒有任何從我的理解只有字符'letters'。 – Dogbert 2013-05-14 14:10:18

+0

OP也只想要5個字母的單詞,這個單詞也會與'baduouwwen'中的'aduou'相匹配 – 2013-05-14 15:58:23

0

而不是[a][c-i][k-l][o-2],請嘗試[ac-ik-lo-z]{5},它應該檢測五個允許字母的字符串。

編輯:哎呀,你特別想要單詞。只需測試任意一邊的單詞邊界,然後:\b[ac-ik-lo-z]{5}\b - 檢查空格會使您錯過匹配,如果它是最後一行,並且後面有一段時間,後面有一個逗號,括號內是,等等。

+0

正如davide所提到的,如果您關心區分大小寫,您可能要明確地允許或拒絕大寫版本,或者只是使用一個標誌來使正則表達式不區分大小寫。 – Mike 2013-05-14 14:11:40

0

如果您也不想使用大寫字母,請使用[^ bjmn]或[^ BbJjMmNn]。

+2

OP只想要除了bjmn之外的字母,而不是任何我理解的字符。 – Dogbert 2013-05-14 14:11:04

0

嘗試\W[ac-ik-lo-z]{5}\W(這在一組五個字符的兩側不包含你正在尋找的那些匹配的空白。

您可以將多個範圍合併爲一個列表,如上。

+0

交換\ W for \ b來測試一般的單詞邊界。例如,如果該單詞是最後一行,並且有一段時間,或者逗號,該怎麼辦? – Mike 2013-05-14 14:17:52

0

這需要一個詞有5個字母,但不包括任何bjmn的。這可以通過使用字母簡化跨越像[AC-I],但這些往往會得到嘗試讀取時有點混亂。

\b([acdefghiklopqrstuvwxyz]{5})\b

enter image description here

enter image description here

相關問題