有一個只由數字組成的字符串輸入,即整數。如何寫一個正則表達式來接受除1,2和25之外的所有數字?什麼是匹配除1,2,25以外的所有數字的正則表達式?
我想在BeanIO(支持正則表達式)的record identification裏面使用這個來跳過一些具有特定值的記錄。
我到達了這個點^(1|2|25)$
,但我想要的是相反的東西。
有一個只由數字組成的字符串輸入,即整數。如何寫一個正則表達式來接受除1,2和25之外的所有數字?什麼是匹配除1,2,25以外的所有數字的正則表達式?
我想在BeanIO(支持正則表達式)的record identification裏面使用這個來跳過一些具有特定值的記錄。
我到達了這個點^(1|2|25)$
,但我想要的是相反的東西。
這對我有用!非常感謝您的幫助! – ktulinho 2014-08-28 17:05:54
您可以使用類似如下的格式:
^([03-9]\d*|1\d+|2[0-46-9]\d*|25\d+)$
或者,如果您正則表達式引擎支持它,你可以只使用一式斷言((?!…)
)是這樣的:
^(?!1$|25?$)\d+$
但是,你可能還不如干脆解析代碼的數量,並確保它不不等於被禁止的價值之一。
See this related question on stackoverflow。
您不應該嘗試編寫這樣的正則表達式,因爲大多數語言都不支持正則表達式的補充。
相反,你應該做的是寫,只有這三樣東西相匹配的正則表達式:^(1|2|25)$
- 然後在你的代碼,你應該檢查,看看這正則表達式匹配\d+
並不能匹配這個另外一個,如:
`if($myStr =~ m/\d+/ && !($myStr =~ m/^(1|2|25)$/))`
(?!^1$|^2$|^25$)(^\d+$)
這應該適合您的情況。
首先你使用什麼語言?第二,如何分享迄今爲止所嘗試的內容? – Dalorzo 2014-08-28 16:17:53
你爲什麼這麼想使用正則表達式呢?這聽起來像你應該''atoi()'或類似的並且比較實際的數字,或者甚至直接比較字符串。 – Dolda2000 2014-08-28 16:18:14
實際上,正則表達式不會匹配數字,它只能匹配字符。七位數字符串仍然只是一個int。 – sln 2014-08-28 16:46:47