プロが教えるわが家の防犯対策術!

エディター等で使用できる、通常の正規表現で、例えば、全角文字を半角文字にする方法はありますでしょうか?

※つまり、PerlのtrやPHPのstrtrのようなことです。

例えば、正規表現対応のエディターで、サイト全体の全角英数字を半角英数字にするような処理をしたいのですが。

A 回答 (4件)

お望みの動作は文字ごとの一対一の置き換えですから、


わざわざ正規表現を使うことはないと思います。つか使ったほうが面倒でしょう。
tr なんかも入力として受け付けるのは正規表現じゃないですよ。

秀丸とxyzzyだとエディタのメニューに、全角→半角(あるいはその逆)の
項目があったりします。
たぶん他にもそういう機能をもったエディタはあると思います。

この回答への補足

ご回答ありがとうございます。

失礼しました。私の使用しているエディターにも、全角半角変換機能があります。

「どんな方法でもいいので処理したい」ではなく、「正規表現で処理したい」のです。環境(OSやエディタ)が変わっても、同様のことがしたいので。

> tr なんかも入力として受け付けるのは正規表現じゃないですよ。
確かに。一見文字クラスに見えますが、正規表現の文字クラスというわけではないのですね。PHPのstrtrも。

つまり、正規表現で、
$str =~ tr/a-zA-Z/a-zA-Z/;
が出来るでしょうか?

出来るはずないと思うのですが、念のため・・・。

補足日時:2008/01/24 02:23
    • good
    • 0

私の愛用のsakuraエディタにもあります>変換機能。

全角カタカナだけとか全角英数のみとか指定もいろいろできるようになってます。
  

参考URL:http://members.at.infoseek.co.jp/sakura_editor/i …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

申し訳ありません。私のエディター(EmEditor)にもあります。ただし、開いているファイルにしか使えないので、5000ファイルを処理する時、5000回繰り返さなければなりません。

grep置換対応なら、その必要はないと思ったのですが、よく考えてみたら、このような処理は正規表現でできないから、変換機能みたいなものが実装されているのですね。

よく考えてみたら、正規表現でできないから、trやstrtrがあるのですかね。

お礼日時:2008/01/24 02:37

> つまり、正規表現で、


> $str =~ tr/a-zA-Z/a-zA-Z/;
> が出来るでしょうか?

考え方だけ。

my %tbl = ('A' => 'A', 'B' => 'B', ... 'z' => 'z');
$str =~ s/([A-Za-z])/$tbl{$1}/ge;

こんな感じにいちいちテーブル参照すれば正規表現の置換でできます。
PHPにも置換を行うときに関数を呼び出せるのがあったと思うので
それを使えば同様のことができるはずです。

エディタの置換機能だとこういうのを持っているのはEmacsくらい?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

> エディタの置換機能だとこういうのを持っているのはEmacsくらい?
この回答を待ってました。viとかCUIのエディタならできるでしょうね。

つまり、Perl で言うところの、/e (←式を評価する)見たいな事を普通のエディタでやりたかったんですが、その場合、式を記憶させるフィールドが必要なので、出来るはずないですね。

納得しました。

お礼日時:2008/01/24 19:23

>5000ファイルを処理する時



エディタを使うよりも素直にPerlでやったほうが早いんじゃない?
    • good
    • 0
この回答へのお礼

ありがとうございます。

Perl使えばなんでもできちゃいます。
Perlがインストールされていない環境で、この処理をしたかったので。

お礼日時:2008/01/24 19:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!