« 括弧3 正規表現(1) | Main | 括弧5 正規表現(3) »

2013.10.09

括弧4 正規表現(2)

<半角から全角へ 置換>

検索の次は置換です。ここでは半角文字以外に挟まれた半角括弧だけを置換し、その前後は元のままにするという操作を考えます。言葉にすれば置換後に
(前は元のまま)(全角括弧)(後は元のまま)
を実現したいのです。

1)検索置換の基本は前に書いたとおりです。
検索:(
置換:(

その前後に正規表現で追加的な条件を付加していきます。

2)検索に加えて置換もするときには注意すべき点があります。
検索だけをするのであれば検索式は、
[!\!-~]\([!\!-~]
でよいのですが、

置換も同時に行うときには、検索式の一部に括弧を入れ
([!\!-~])\(([!\!-~])
とする必要があるのです。

これは正規表現では半角括弧の中に入った文字列をパターンとして一まとまりで扱い、この文字列パターンを前から順番に\1、\2、\3というように認識するからです(これはワードの話で、秀丸旧バージョンでは\0から始まります)。

置換側で\1、\2、\3というようにパターンの番号を指定すれば、置換側ではその一まとまりの文字列パターンがそのまま再現されます。

3)以上をまとめると、和文の中に混入した半角括弧を全角括弧に修正するには

検索:([!\!-~])\(([!\!-~])
置換:\1(\2
ワイルドカードをオン

とすることになります。同様の操作を閉じる側の括弧についても繰り返します。

4)空白の処理
これまでの処理により全角文字の間にある括弧はすべて全角括弧になりました。しかし全角文字には全角空白も含まれます。全角括弧の隣が全角空白であったときは、その空白を削除するという操作が必要です。

そこで半角全角変換処理とは別に、全角括弧の前後にある全角空白を削除する処理を付加しておきます。

検索:[ ]{1,}(
置換:(
ワイルドカードをオン

検索の[ ]の中は全角空白、(は全角括弧です。置換の(も全角です。これで括弧の前の1つ以上の全角括弧を削除することになります。これ以外の余分な文字を除去するときにも役立ちます。

これを閉じる側の括弧についても繰り返します。

さて、これで半角括弧を全角括弧にするのは片付きました。では逆方向はどうするか。こちらはもう少し複雑です。

|

« 括弧3 正規表現(1) | Main | 括弧5 正規表現(3) »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/20048/58349974

Listed below are links to weblogs that reference 括弧4 正規表現(2):

« 括弧3 正規表現(1) | Main | 括弧5 正規表現(3) »