Highlighted

金額前「¥」表示を金額後「円」表示に検索置換できないでしょうか?

Community Beginner ,
Apr 26, 2020

Copy link to clipboard

Copied

「¥」表示の金額がドキュメント中にたくさんある場合に、「円」表示に一気に変えられないでしょうか?つまり「¥1,500」「¥800」などを「1.,500円」「800円」などに、複数ページに存在するものを一気に変えたいのです。なんとか正規表現(¥.+?)などで検索まではできたので、後に円を付けることも、なんとかできそうな気がするのですが、私の知識ではできません。どなたか教えていただけませんか?

Marup1957さん

 

おっしゃる通り、正規表現でできそうです。

検索にあたり、例えば ¥[0-9,]+ とすると、¥マークとそれに続く数字とカンマの連続を検索できます。

これを置換にも応用したいということですよね。

 

正規表現の検索条件にマッチした文字を置換に利用するには、$0 を使います。

$0 はマッチしたすべての文字列が参照されますが、今回は ¥ マークは省きたいですね。

そこで、検索条件を少し修正します。

¥([0-9,]+)

と ( ) でくくりました。これはグルーピングといって、置換の際に $n として(nは9までの整数)グルーピングした部分を参照することができます。

というわけでこの検索条件を $1 で置換してみてください。

なんとなく、目的のことができないでしょうか?

 

 

TOPICS
How to, Scripting, Type

Views

645

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more

金額前「¥」表示を金額後「円」表示に検索置換できないでしょうか?

Community Beginner ,
Apr 26, 2020

Copy link to clipboard

Copied

「¥」表示の金額がドキュメント中にたくさんある場合に、「円」表示に一気に変えられないでしょうか?つまり「¥1,500」「¥800」などを「1.,500円」「800円」などに、複数ページに存在するものを一気に変えたいのです。なんとか正規表現(¥.+?)などで検索まではできたので、後に円を付けることも、なんとかできそうな気がするのですが、私の知識ではできません。どなたか教えていただけませんか?

Marup1957さん

 

おっしゃる通り、正規表現でできそうです。

検索にあたり、例えば ¥[0-9,]+ とすると、¥マークとそれに続く数字とカンマの連続を検索できます。

これを置換にも応用したいということですよね。

 

正規表現の検索条件にマッチした文字を置換に利用するには、$0 を使います。

$0 はマッチしたすべての文字列が参照されますが、今回は ¥ マークは省きたいですね。

そこで、検索条件を少し修正します。

¥([0-9,]+)

と ( ) でくくりました。これはグルーピングといって、置換の際に $n として(nは9までの整数)グルーピングした部分を参照することができます。

というわけでこの検索条件を $1 で置換してみてください。

なんとなく、目的のことができないでしょうか?

 

 

TOPICS
How to, Scripting, Type

Views

646

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Apr 26, 2020 0
Engaged ,
Apr 26, 2020

Copy link to clipboard

Copied

Marup1957さん

 

おっしゃる通り、正規表現でできそうです。

検索にあたり、例えば ¥[0-9,]+ とすると、¥マークとそれに続く数字とカンマの連続を検索できます。

これを置換にも応用したいということですよね。

 

正規表現の検索条件にマッチした文字を置換に利用するには、$0 を使います。

$0 はマッチしたすべての文字列が参照されますが、今回は ¥ マークは省きたいですね。

そこで、検索条件を少し修正します。

¥([0-9,]+)

と ( ) でくくりました。これはグルーピングといって、置換の際に $n として(nは9までの整数)グルーピングした部分を参照することができます。

というわけでこの検索条件を $1 で置換してみてください。

なんとなく、目的のことができないでしょうか?

 

 

Yusuke S.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Apr 26, 2020 2
Adobe Community Professional ,
Apr 26, 2020

Copy link to clipboard

Copied

ゆーすけさんの記述で問題ないですが、ちょっとバカ正直な書き方をしてみましょう。

 

 

¥((\d{1,3},)?\d{1,3})

 

 


これを日本語的に書くと¥に続くグループで、中に1〜3桁の数字とカンマで構成されたグループがあるかもしれなくて、数字が1〜3桁続く文字列という表現になりますこれで¥0~¥999,999の範囲の金額を置換することが出来ます。この例のようにグルーピングをうまく利用して条件を組み合わせる事が正規表現の基本となります。基本的なルールはそう多くありません。そのルールをうまく組み合わせていく事がキモになります。

スクリーンショット 2020-04-27 11.50.56.png

この例ではグルーピングを入れ子にしているので$0ではなく$1でヒットしたグループを抽出しています。

 

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Apr 26, 2020 2
Community Beginner ,
Apr 27, 2020

Copy link to clipboard

Copied

ゆーすけさん、Ten_Aさん、お二人とも早速にありがとうございます!!すごい早い上にとても適切で確実でした。するっとできてしまうことに驚いています。これは私には非常に有効です。感激です。細かいところが、特にTen_Aさんの内容がまだあやふやな理解なので、じっくり読みこんで勉強します。相談して良かったです。本当にありがとうございました!またぜひよろしくお願いいたします。

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Apr 27, 2020 0
Community Beginner ,
Apr 27, 2020

Copy link to clipboard

Copied

ゆーすけさん、Ten_Aさん、お二人とも早速にありがとうございます!!すごい早い上にとても適切で確実でした。するっとできてしまうことに驚いています。これは私には非常に有効です。感激です。細かいところが、特にTen_Aさんの内容がまだあやふやな理解なので、じっくり読みこんで勉強します。相談して良かったです。本当にありがとうございました!またぜひよろしくお願いいたします。

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Apr 27, 2020 0