2011-07-20 8 views
0

すべてのキャプチャグループを置き換えます'_'の後の文字)をキャプチャしたグループを大文字にしていますか?私のようなものを変換する必要が

+0

はい、それは可能である(私はどのように私はまた、あなたを伝えることができるより優れたJavaのを知っている誰かを推測)。私はちょうどその正規表現を使って、 '[a-z]'が '2'とマッチしないので' fooBarBaz_2'を得ることを指摘したいと思います。 –

答えて

3

あなたはこのように、整合のappendReplacement/appendTailメソッドを使用することができます。

Pattern pattern = Pattern.compile("_([a-z0-9])"); 
Matcher matcher = pattern.matcher("foo_bar_baz_2"); 

StringBuffer stringBuffer = new StringBuffer(); 
while(matcher.find()) { 
    matcher.appendReplacement(stringBuffer, matcher.group(1).toUpperCase()); 
} 
matcher.appendTail(stringBuffer); 

System.out.println(stringBuffer.toString()); 
3

はい。 \U$1\Eと交換してください - 限り、他に何もあなたの正規表現ではありませんように、あなたが\Eをダンプし、\U$1に短縮することができ"\\U$1\\E"

Java文字列のように表します。口座にTimPietzckerさんのコメント@撮影


、あなたの正規表現自体は"_([a-z0-9])"でなければなりません。

1
StringBuffer sb = new StringBuffer(); 
while (matcher.find()) { 
    matcher.appendReplacement(sb, matcher.group(1).toUpperCase()); 
} 
matcher.appendTail(sb); 
関連する問題