2016-06-30 9 views
4

私はユーザー定義の文字列内のフィールドを見つけようとしており、その中から配列を作成しようとしています。例えば、ユーザが入力した場合:私は、サブストリングを見つけるために正規表現持って正規表現を使用してJavaで文字列を分割する

fields[0] = "@{fieldOne}" 
fields[1] = "@{fieldTwo}" 
fields[2] = "@{FieldThree}" 

abc @{fieldOne} defg @{FieldTwo} 123 @{FieldThree} zyx 

は私が結果として必要/@{[a-zA-Z]*}/gを、私はそれを使用することに成功していません文字列を分割するJava。ここで私は現時点で持っているものだ、とのバリエーションを試みた:

String displayString = "abc @{fieldOne} defg @{FieldTwo} 123 @{FieldThree} zyx"; 
Pattern pattern = Pattern.compile("/@\\{[a-zA-Z]*\\}/g"); 
Matcher matcher = pattern.matcher(displayString); 

matcher.matches()をfalseを返している - 私は私の正規表現の書式設定を推測していることは間違っていますが、私は何を把握することができていませんそのはず。

コメントと回答を先にありがとう!

答えて

8

スラッシュまたは//g修飾語は不要です。また、二重エスケープを使用します。

String displayString = "abc @{fieldOne} defg @{FieldTwo} 123 @{FieldThree} zyx"; 

Pattern pattern = Pattern.compile("@\\{[a-zA-Z]*\\}"); 
Matcher matcher = pattern.matcher(displayString); 
while (matcher.find()){ 
    System.out.println(matcher.group(0)); 
} 
+0

完璧、ありがとうございます! (私は二重スラッシュを持っていた、ちょうど私の元のSOのポストではない)。私の主な問題は、 'matcher.matches()'を使っていて、期待通りのことをしていなかったからです。正規表現として何があっても、falseを返していました。試合の結果を投稿してくれてありがとう! – Nikki

関連する問題