正規表現でマッチした箇所に対して、何らかの処理をして元の文字列に戻す処理をしたいと思っています。例えば、入力文字のうち[0-9]
の部分に対して、逆順に並び替えて元の文字列に戻す処理です。
text=123abc456def789
text=321abc654def987
Javaの正規表現のサンプルはたくさんありますが、入力文字列の中にマッチする箇所が複数あったり(上記の例では3箇所ある)、単に置換するのではなく、何らかの処理を加えて戻したりするようなやや複雑な例を見つけることができませんでした。いくつかアイディアを思いつきましたが、おそらくよりよい方法があると思います。アイディアの例。
- マッチする箇所を全部抜き出す
- replaceAll("[0-9]", "絶対に出てこないであろう特殊文字列"); に置換する
- 抜き出した箇所に処理を加えて、"絶対に出てこないであろう特殊文字列"を左から順にreplace()していく
その"絶対に出てこないであろう特殊文字列"はおそらく出てくることはないと思いますが、万一入力文にその文字列が含まれていた場合には誤動作しますし、必要以上に複雑なことをしているような気もします。
正規表現に詳しい方がいらっしゃいましたら、ご指導いただけると幸いです。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/29 00:25