2016-07-14 9 views
0

I以下の文字列があります。文字列内の1文字にregexを使用するには?

LoopStep(i,0,m-1,1) 

を、私は「(」ちょうど最初見つかりますように、私の正規表現コードは、たとえば私は、正規表現を使用したい:。\\([^)]*\\)私は第一のオープンをチェックします。。カッコだけなので、私は、このコードに問題はありません:「あなたは疑問符を使用することができますが、正規表現にそれを追加した場合、それは非欲張りになっ例えば、パターンを

LoopStep ((i,0,m-1,1)). 
+1

あなただけの最初の '('その後、クラスの 'indexOf'メソッドを使用し、' STRING'の位置を検索したい場合は、これは単純なsomehingの正規表現を必要としません: 'int index = input.indexOf( '(');' – Jesper

+0

なぜあなたは正規表現が必要ですか? [indexOf](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(java.lang.String)) – StackFlowed

+1

引用符は使用していませんか? –

答えて

1

あなたはだけあなたStringは、2つの連続した括弧が含まれていないかどうかをチェックしたい場合は、正規表現の代わりにindexOfcontainsを使用することができます。ここで、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("([^(]|(?<!\\()\\((?!=\\())+") 
-1

を(一方、すべてのカッコに一致します(「?」は最初のオカレンスにのみ一致します)

+0

最後のものは?私は\ Zで試してみましたが、なんらかの理由でうまくいきません。 –

+0

閉じた括弧の最初のものか最後のものかを一致させますか? – Aurasphere

+0

LoopStepの後に "("と ")で終わる" –

関連する問題