[解決済み] Java Regex Replace with Capturing Group (Java正規表現とキャプチャグループの置き換え)
2023-08-16 02:15:36
質問
正規表現をキャプチャグループの変更内容で置き換える方法はありますか?
例を挙げます。
Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher(text);
resultString = regexMatcher.replaceAll("$1"); // *3 ??
そして、すべての出現を$1×3倍で置き換えたい。
を編集してください。
どうやら、何かが間違っているようです :(
もし、私が
Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher("12 54 1 65");
try {
String resultString = regexMatcher.replaceAll(regexMatcher.group(1));
} catch (Exception e) {
e.printStackTrace();
}
IllegalStateExceptionを投げます。一致するものがありません
しかし
Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher("12 54 1 65");
try {
String resultString = regexMatcher.replaceAll("$1");
} catch (Exception e) {
e.printStackTrace();
}
は正常に動作しますが、$1を変更することができません :(
を編集してください。
これで、動作するようになりました :)
どのように解決するのですか?
どうでしょう。
if (regexMatcher.find()) {
resultString = regexMatcher.replaceAll(
String.valueOf(3 * Integer.parseInt(regexMatcher.group(1))));
}
最初のマッチを取得するために
#find()
. その後に
#group(1)
を使ってこの最初のマッチを参照し、すべてのマッチを最初の maches 値に 3 を掛けたもので置き換えます。
また、各マッチをそのマッチの値に3を掛けたもので置き換えたい場合には、そのマッチの値で置き換えます。
Pattern p = Pattern.compile("(\\d{1,2})");
Matcher m = p.matcher("12 54 1 65");
StringBuffer s = new StringBuffer();
while (m.find())
m.appendReplacement(s, String.valueOf(3 * Integer.parseInt(m.group(1))));
System.out.println(s.toString());
を覗いてみるとよいでしょう。
Matcher
のドキュメント
をご覧ください。この他にも多くのことが詳細に説明されています。
関連
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] 正規表現における非捕捉グループとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
型に解決できない エラー解決
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
シェルコマンドやスクリプトのJavaコール
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
1分でわかる!恋人の写真をIDEAの背景画像に設定する方法【おすすめ集
-
アクセス制限の解決方法: ---- in Java