我想要一個正則表達式來返回一個正匹配,如果兩個字符串不在測試字符串中。例如,如何編寫正則表達式來查找NOT string1 AND NOT string2?
^((?!string1).)*$
將匹配如果string1
沒有被測試的字符串中含有。我如何寫這個來測試一個字符串是否不包含string1
AND不包含string2
?
我想要一個正則表達式來返回一個正匹配,如果兩個字符串不在測試字符串中。例如,如何編寫正則表達式來查找NOT string1 AND NOT string2?
^((?!string1).)*$
將匹配如果string1
沒有被測試的字符串中含有。我如何寫這個來測試一個字符串是否不包含string1
AND不包含string2
?
就快成功了:
^((?!string1|string2).)*$
可以在負先行使用|
字符作爲左右,如果只將字符串匹配就會失敗。
請注意,您也可以重寫這樣這個特殊的例子:
^((?!string[12]).)*$
我的假設是,你的實際使用情況下不會是微不足道,因此使用|
是比較通用的解決方案。
你甚至不需要正則表達式,像「索引子字符串」這樣的函數肯定存在於你正在使用的語言中。
如果你真的需要的正則表達式比賽,不要過度工程,並用你的語言特性:
if (!(str =~ /regex/) && !(str =~ /regex/))
{
...
另一種選擇是使用(?!)
作爲環視。就像這樣:
^(?!.*string1)(?!.*string2).*$
string1和string2的長度必須相同,儘管 – arnaud576875
爲什麼會出現這個問題? –
這是一個問題,如果string1和string2不具有相同的長度,因爲它在這種情況下不起作用 – arnaud576875