我試圖找到一個字符串包含一個字的只有一個發生,負環視正則表達式 - 只有一個發生 - Java的
例如
String : `jjdhfoobarfoo` , Regex : `foo` --> false
String : `wewwfobarfoo` , Regex : `foo` --> true
String : `jjfffoobarfo` , Regex : `foo` --> true
多個foo
的可在字符串中的任何地方發生,所以他們可以不連續,
我測試在Java中使用字符串foobarfoo
以下正則表達式匹配,但它不工作,它返回真:
static boolean testRegEx(String str){
return str.matches(".*(foo)(?!.*foo).*");
}
我知道這個話題看似重複,但我很驚訝,因爲當我使用這個表達式:(foo)(?!.*foo).*
它的作品!
任何想法,爲什麼出現這種情況?
第二個正則表達式匹配第一個輸入字符串,就是發生了什麼。儘管如此,它會返回第二個輸入示例的「false」。 – jlordo
但通常字符串可能不會以'foo'開頭 –
現在編輯問題,'foo'可能發生在字符串中的任何地方,另一個'foo'也可能發生 –