Copy link to clipboard
Copied
「¥」表示の金額がドキュメント中にたくさんある場合に、「円」表示に一気に変えられないでしょうか?つまり「¥1,500」「¥800」などを「1.,500円」「800円」などに、複数ページに存在するものを一気に変えたいのです。なんとか正規表現(¥.+?)などで検索まではできたので、後に円を付けることも、なんとかできそうな気がするのですが、私の知識ではできません。どなたか教えていただけませんか?
Marup1957さん
おっしゃる通り、正規表現でできそうです。
検索にあたり、例えば ¥[0-9,]+ とすると、¥マークとそれに続く数字とカンマの連続を検索できます。
これを置換にも応用したいということですよね。
正規表現の検索条件にマッチした文字を置換に利用するには、$0 を使います。
$0 はマッチしたすべての文字列が参照されますが、今回は ¥ マークは省きたいですね。
そこで、検索条件を少し修正します。
¥([0-9,]+)
と ( ) でくくりました。これはグルーピングといって、置換の際に $n として(nは9までの整数)グルーピングした部分を参照することができます。
というわけでこの検索条件を $1 で置換してみてください。
なんとなく、目的のことができないでしょうか?
Copy link to clipboard
Copied
Marup1957さん
おっしゃる通り、正規表現でできそうです。
検索にあたり、例えば ¥[0-9,]+ とすると、¥マークとそれに続く数字とカンマの連続を検索できます。
これを置換にも応用したいということですよね。
正規表現の検索条件にマッチした文字を置換に利用するには、$0 を使います。
$0 はマッチしたすべての文字列が参照されますが、今回は ¥ マークは省きたいですね。
そこで、検索条件を少し修正します。
¥([0-9,]+)
と ( ) でくくりました。これはグルーピングといって、置換の際に $n として(nは9までの整数)グルーピングした部分を参照することができます。
というわけでこの検索条件を $1 で置換してみてください。
なんとなく、目的のことができないでしょうか?
Copy link to clipboard
Copied
ゆーすけさんの記述で問題ないですが、ちょっとバカ正直な書き方をしてみましょう。
¥((\d{1,3},)?\d{1,3})
これを日本語的に書くと¥に続くグループで、中に1〜3桁の数字とカンマで構成されたグループがあるかもしれなくて、数字が1〜3桁続く文字列という表現になります。これで¥0~¥999,999の範囲の金額を置換することが出来ます。この例のようにグルーピングをうまく利用して条件を組み合わせる事が正規表現の基本となります。基本的なルールはそう多くありません。そのルールをうまく組み合わせていく事がキモになります。
この例ではグルーピングを入れ子にしているので$0ではなく$1でヒットしたグループを抽出しています。
Copy link to clipboard
Copied
ゆーすけさん、Ten_Aさん、お二人とも早速にありがとうございます!!すごい早い上にとても適切で確実でした。するっとできてしまうことに驚いています。これは私には非常に有効です。感激です。細かいところが、特にTen_Aさんの内容がまだあやふやな理解なので、じっくり読みこんで勉強します。相談して良かったです。本当にありがとうございました!またぜひよろしくお願いいたします。
Copy link to clipboard
Copied
ゆーすけさん、Ten_Aさん、お二人とも早速にありがとうございます!!すごい早い上にとても適切で確実でした。するっとできてしまうことに驚いています。これは私には非常に有効です。感激です。細かいところが、特にTen_Aさんの内容がまだあやふやな理解なので、じっくり読みこんで勉強します。相談して良かったです。本当にありがとうございました!またぜひよろしくお願いいたします。