2016-11-29 3 views
0

私は、以下のディープリンクを持っており、正規表現は、文字列が2以上の疑問符を持っている場合は失敗する必要があり、理想的にはここでは、常に1つ疑問符正規表現 - リンクダブル疑問符を許可しないのJava

を含まなければならない正規表現は、私はあります使用:"^(?!.*[?][?].*)+$"

TestMe?src=SRCH&reset=true - regex should pass 
TestMe?src=SRCH?reset=true - regex should fail 
+1

あなたの正規表現 '^ + $'のみ一致します(* *?!。[?] [?]。)空の文字列を返し、他のすべての文字列に失敗します。 s.matches( "(?s)^(?!(?:[^?] * [?]){2})。*") 'か、以下の解を使用してください。 –

+1

この問題を正規表現で解決することにしました。今あなたには2つの問題があります。 –

+0

上記の正規表現が動作します – user1970783

答えて

2

をあなたは2隣接のを探しています:?

"^(?!.[?][?].)+$" 
    ^^ 

あなたの文字列があることを持っていない "失敗" 次の2つの疑問符をチェックするために正規表現を使用する必要はありません

TestMe?src=SRCH?reset=true 
     ^--------^ 

boolean containsTwoQuestionMarks(String str) { 
    return str.indexOf('?') != str.lastIndexOf('?'); 
} 
+0

私は隣同士を探していませんか?全体的に2つ以上ですか?失敗するはずです。正規表現が必要です。既存の正規表現に追加したいのですが – user1970783

+0

少し効率的です: 'int first = str.indexOf( '?');最初に> = 0 &&を返します。index shmosel

関連する問題