あなたはだけあなたString
は、2つの連続した括弧が含まれていないかどうかをチェックしたい場合は、正規表現の代わりにindexOf
かcontains
を使用することができます。ここで、test
をご希望されていることを
// will return true only if the String doesn't contain ((
// you can also use to infer actual index
test.indexOf("((") == -1
// same and better but you can't use the index
!test.contains("((")
注意をString
変数、例えば値は"LoopStep(i,0,m-1,1)"
です。
実際に構文を解析している場合は、正規表現を使用しないでください。
メタ言語の構文を検証して解析するには、独自のパーサーを構築する必要があります。
注
ただ、あなたが、あなたがこのような場合には、構文を検証するために正規表現を使用している場合、ここでの連続に対してチェックするためにあなたの全体のString
に一致する正規表現の例だに入るかもしれないもの混乱の一見を与えるために、括弧("(("
):
// | non-parenthesis
// | | or
// | | | not preceded by parenthesis
// | | | | actual parenthesis
// | | | | | not followed by parenthesis
// | | | | | | 1+ length(adjust with desired quantifier)
test.matches("([^(]|(?<!\\()\\((?!=\\())+")
あなただけの最初の '('その後、クラスの 'indexOf'メソッドを使用し、' STRING'の位置を検索したい場合は、これは単純なsomehingの正規表現を必要としません: 'int index = input.indexOf( '(');' – Jesper
なぜあなたは正規表現が必要ですか? [indexOf](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(java.lang.String)) – StackFlowed
引用符は使用していませんか? –