2011-09-14 13 views
0

を置き換える見つける:私は何をしたいかJavaの正規表現は、文字列を配列に追加して、私はこのようなテキストの文字列を持っている本来の

This is a[WAIT] test. 

で始まる部分文字列の文字列を検索している[と

String regex_script = "/^\\[\\]$/"; //Match a string which starts with the character [ ending in the character ] 

ここで何私は次のとおりです。 私はArrayListにそれを追加し、ここで^

と元の文字列に部分文字列を置換したい見つけるそれぞれが私の正規表現である]で終わりますこれまでのところ:

StringBuffer sb = new StringBuffer(); 

Pattern p = Pattern.compile(regex_script); // Create a pattern to match 
Matcher m = p.matcher(line); // Create a matcher with an input string 
boolean result = m.find(); 
     while(result) { 
       m.appendReplacement(sb, "^"); 
       result = m.find(); 
     } 
     m.appendTail(sb); // Add the last segment of input to the new String 

これについてはどうすればよいですか?ありがとう

答えて

2

はあなたが行うことができます:

String regex_script = "\\[([^\\]]*)\\]"; 

    String line = "This is a[WAIT] testThis is a[WAIT] test"; 
    StringBuffer sb = new StringBuffer(); 
    List<String> list = new ArrayList<String>(); //use to record 

    Pattern p = Pattern.compile(regex_script); // Create a pattern to match 
    Matcher m = p.matcher(line); // Create a matcher with an input string 

    while (m.find()) { 
     list.add(m.group(1)); 
     m.appendReplacement(sb, "[^]"); 
    } 
    m.appendTail(sb); // Add the last segment of input to the new String 

    System.out.println(sb.toString()); 
+0

はうまくいった!感謝 - どのエスケープシーケンスがそのパターンにどのように影響を与えたかには慣れていませんでした。 – GideonKain

+0

@ouotuoこんにちは、あなたはこの質問を見ることができますか? http://stackoverflow.com/questions/34938232/android-regex-passing-of-text-output-from-method-to-method –

-1

部分文字列を検索する場合は、^と$を使用しないでください。これらは初めのために、文字列(単語ではなく)で終わります試してみてください。

String regex_script = "/\[.*\]/"; 
+1

いいえ、Javaで文字列リテラル内のバックスラッシュをエスケープする必要があります再び、Javaの正規表現は '/'のような文字で区切られていません。 –

関連する問題