ワイルドカードの範囲

ワイルドカードを使った置換方法がうまくいかない。(失敗談のみ)

 

受付番号「○○○○」番号

この文の○○○○の部分をDBから取得した数値に置換したい。

けれど↑の文字は文章の一部であって、複数出てきます。

 

受付番号「○○○○」番号のお客様

振込が完了致しましたのでご連絡致します。

受付番号「○○○○」番号のお客様には多大なるご迷惑を御掛け致しました。

 

こんな感じのテンプレートがあります。

だからテンプレート文章をString型で保持して

String stg = テンプレの文章;

String no  = 取得した番号;

stg.replaceAll( "受付番号「.*」番号", "受付番号「"+no+"」番号" );

で置き換えようと思ったのですが。。。

.*」 では

 

受付番号「○○○○」番号のお客様

振込が完了致しましたのでご連絡致します。

受付番号「○○○○」番号のお客様には多大なるご迷惑を御掛け致しました。

 

赤い部分までヒットしてしまい、

置換したくない文字列まで置換されてしまいました…。

はじめにヒットした”受付番号「”から

最後にヒットした”」番号”までが

対象になるようですね。

 

テンプレートの番号に置き換わる部分が

必ず○○○○とされていれば、

ワイルドカードなど使わずにできたのですが、

テンプレート管理方法がバラバラでこうならず…。

 

1行に1ワードしか出ないという条件ならば、

改行コードで区切って毎行置換する方法で落ち着く予定です。

しかし、正規表現でどうにかならないものかなぁ。