2015-06-25 23 views
1

我是新來的正則表達式世界。我一直在使用正則表達式,但今天我發現了一個我無法解決的問題。我搜索了論壇,但沒有運氣。多重拒絕選擇的正則表達式

我必須這樣做,否定匹配。我必須匹配EOS.1EOS.2這樣的表格,但最多有EOS.9000表格。他們是不連續的,我有這樣909122933750一些表留下,等

我嘗試這樣的模式:

EOS\.(?!91|90|2300|2504|3747|3750|100|3788|2303|2304|2293) 

然而,僅匹配EOS.一部分,而不是數字。

非常感謝。

+0

你的意思是你想過濾掉1-9000範圍內的一些數字嗎? –

+0

不,我必須匹配EOS的每個模板(數字),這不是所提及的。但他們不是連續的,因爲expample你有EOS.0,但是然後跳到EOS.9和11。所以我認爲,鑑於我不能做一個多重比賽,因爲他們是我認爲匹配所有數千張桌子除了我不需要的那個 – Bofus

+0

我只想指出,我在發現這個時候發現,如果你有,說EOS.9000,它不會因爲90而被匹配。不知道你是否知道。 – 7thFox

回答

1

您可以使用下面的正則表達式:

\bEOS\.(?!(91|90|2300|2504|3747|3750|100|3788|2303|2304|2293)\b)(?:[1-9][0-9]{0,2}|[1-8][0-9]{3}|9000)\b 

demo

此正則表達式,然後從1字面.和數字全字EOS匹配高達9000,但不包括那些在負先行。

您的EOS\.(?!91|90|2300|2504|3747|3750|100|3788|2303|2304|2293)正則表達式僅匹配EOS.部分,因爲預見不會消耗字符,只檢查它們的存在與否。

+0

超凡!它的作用就像一個魅力,我不知道負面看起來只是檢查存在。非常感謝你 – Bofus

+0

你可以閱讀更多關於[regular-expressions.info](http://www.regular-expressions.info/lookaround.html)。 –