ワイルドカードの範囲
ワイルドカードを使った置換方法がうまくいかない。(失敗談のみ)
受付番号「○○○○」番号
この文の○○○○の部分をDBから取得した数値に置換したい。
けれど↑の文字は文章の一部であって、複数出てきます。
受付番号「○○○○」番号のお客様
振込が完了致しましたのでご連絡致します。
受付番号「○○○○」番号のお客様には多大なるご迷惑を御掛け致しました。
こんな感じのテンプレートがあります。
だからテンプレート文章をString型で保持して
String stg = テンプレの文章;
String no = 取得した番号;
stg.replaceAll( "受付番号「.*」番号", "受付番号「"+no+"」番号" );
で置き換えようと思ったのですが。。。
「.*」 では
受付番号「○○○○」番号のお客様
振込が完了致しましたのでご連絡致します。
受付番号「○○○○」番号のお客様には多大なるご迷惑を御掛け致しました。
赤い部分までヒットしてしまい、
置換したくない文字列まで置換されてしまいました…。
はじめにヒットした”受付番号「”から
最後にヒットした”」番号”までが
対象になるようですね。
テンプレートの番号に置き換わる部分が
必ず○○○○とされていれば、
ワイルドカードなど使わずにできたのですが、
テンプレート管理方法がバラバラでこうならず…。
1行に1ワードしか出ないという条件ならば、
改行コードで区切って毎行置換する方法で落ち着く予定です。
しかし、正規表現でどうにかならないものかなぁ。