Wenn Sie nur auf überprüfen möchten, ob Ihr String
enthält keine zwei aufeinanderfolgende Klammern, können Sie indexOf
oder contains
anstelle von regulären Ausdrücken verwenden:
// 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("((")
Hinweis darauf, dass hier test
gewünschten ist String
Variable, z mit Wert "LoopStep(i,0,m-1,1)"
.
Wenn Sie tatsächlich eine Syntax analysieren, die anscheinend der Fall ist, verwenden Sie keine regulären Ausdrücke.
Sie müssen wahrscheinlich Ihren eigenen Parser erstellen, um die Syntax Ihrer Metasprache zu überprüfen und analysieren.
Hinweis
Nur dir einen Einblick zu geben, was Sie verwirrt einlassen könnten, wenn Sie reguläre Ausdrücke verwenden, die Syntax in diesem Fall, hier ist ein regex Beispiel für Ihre ganze String
überprüfen gegen Mal in Folge zu validieren Klammer ("(("
):
// | non-parenthesis
// | | or
// | | | not preceded by parenthesis
// | | | | actual parenthesis
// | | | | | not followed by parenthesis
// | | | | | | 1+ length(adjust with desired quantifier)
test.matches("([^(]|(?<!\\()\\((?!=\\())+")
Wenn Sie nur die Position des ersten '(' dann die 'indexOf' Methode der Klasse' String' verwenden möchten, finden, die Sie dieser einfachen regulären Ausdruck nicht brauchen für somehing : 'int index = input.indexOf ('(');' – Jesper
Warum brauchst du Regex? [indexOf] (https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf (java.lang.String)) – StackFlowed
Sie verwenden keine Anführungszeichen? –