【ハウツー】
前々回の記事では、任意の1文字にマッチするメタ文字「.(ピリオド)」や、直前にある文字の1個以上の繰り返しにマッチする「+(プラス)」を用いましたが、より多くのメタ文字を組み合わせると、複雑な文字列にマッチングさせることが可能です。今回は不特定の文字にマッチするメタ文字を使ってみましょう。
さて、日本語が難しいと言われる所以のひとつに、漢字の使い方があります。たとえば「ありがたい」という言葉は、感謝を表わす場合や自分にとって好都合な状態を表わすだけでなく、実際にあり得ない場合を用いる場面にも使用するため、混合される方も少なくありません。たとえば、場所や地位の場合は「在る」、持ち物や限りがある場合は「有る」を用います。
この「在る」「有る」の両者を正規表現でマッチさせるには、「[](ブラケット)」を使用しましょう。ブラケットで囲まれた文字列の"いずれかのひとつ"を意味し、何文字あろうとマッチ対象として扱われる便利なメタ文字です。また、ブラケット内にもメタ文字を使用できるため、文字列の先頭を指すのであれば「^(キャレット)」、文末であれば「$(ドルマーク)」を追加してください。
「在る」「有る」の両者を対象にする場合は「[有在]」と書きますが、「有」は「~りがたい」や「~がたい」と送り仮名が変化する場面があります。加えて「ありがたい」の「がたい」も、漢字で表する場合もあるでしょう。そのため、先の送り仮名問題と「難い」をまとめて解決するには「[難りがた]」と漢字および送り仮名を、キャレットで囲むことで対処できます。
最後に「ありがたい」は同表記だけでなく、「ありがたかった」「ありがたき」「ありがたく」「ありがたければ」と変化する場合もあるでしょう。それらの文字列にマッチさせるには、直前にある文字に対して0個以上の繰り返しにマッチするメタ文字「*(アスタリスク、もしくはワイルドカード)」を使用しましょう。同メタ文字と前述の正規表現を組み合わせることで、「~た」「~難」までがマッチ対象となります。残りの部分は、前々回の記事で用いたタグ付き正規表現を用いれば、「~かった」など異なる表記にも使用できます。
正規表現
検索:[有在][難りがた]*
置換:ありがた\1
有り難い
有難い
有りがたい
在りがたい
ありがたい
ありがたい
ありがたい
ありがたい
有り難かった
有難くもないい
有りがたく存知ます
在りがたければ
ありがたかった
ありがたくもない
ありがたく存知ます
ありがたければ
先ほどは、直前にある文字に対して0個以上の繰り返しにマッチする「*(アスタリスク、もしくはワイルドカード)」を用いましたが、もうひとつのメタ文字として、「?(クエスチョンマーク)」を紹介しましょう。
直前にある文字に対して0~1回以上の繰り返しにマッチする「?」は、"その文字がある場合もない場合もマッチする"のが利点です。たとえば、ウェブサーバー用URLとしては「http」だけでなく、セキュアな「https」が用いられることがありますが、この両者を検索対象に加える場合は、「https?」と書くことで、末尾の「s」がある場合もない場合もマッチします。
下記サンプルでは、置換文字列として「☆\t\0」を使用しています。これはマッチしたURLのみ行頭に"「☆」+タブコード+検索文字列全体"という意味のため、「ftp」ではじまるURLは変化しません。大量のURLリストを整理するときなどにご使用ください。
正規表現
検索:https?
置換:☆\t\0
http://www.mycom.co.jp/
https://www.mycom.co.jp/
ftp://www.mycom.co.jp/
☆ http://www.mycom.co.jp/
☆ https://www.mycom.co.jp/
ftp://www.mycom.co.jp/
阿久津良和(Cactus)
![]() |
【ハウツー】ゼロからはじめる正規表現 秀丸編 - 秀丸で文字列の末尾を制御する [2008/10/20] |
![]() |
【ハウツー】ゼロからはじめる正規表現 秀丸編 - 行頭に文字列を挿入する [2008/10/15] |
| Evernote、リマインダー機能を追加 - Mac、iOS、Web版で利用可能 [21:30 5/24] |
| 【レポート】写真の印刷と共有の楽しさを再実感 - LGのモバイルフォトプリンタ「Pocket Photo」発表会 [21:29 5/24] |
| 富士通、直販サイト「WEB MART」で「ボーナスセール」 - PCが最大24%割引 [20:16 5/24] |
| ディラック、Celeron 1007Uをオンボードで搭載したMini-ITXマザーボード [20:13 5/24] |
| 上海問屋、7つの充電ポートを装備したUSB-ACチャージャーなど3種 [20:08 5/24] |
|
[秘密結社 鷹の爪]LINEスタンプ第2弾が登場! [14:00 5/25] ホビー |
|
「義風堂々」声優発表、兼続は浪川大輔、慶次は佐藤拓也 [13:39 5/25] ホビー |
|
[アニメ質問状]「聖☆おにいさん」 森山未來と星野源の絶妙な掛け合いに注目! [13:30 5/25] ホビー |
|
「こちらがこのバーのマスターです」というときの「This is the master of this bar.」【うっかり使うとアブナイ英語】 [13:30 5/25] ライフ |
|
失礼に当たる、お客様の見送り方はどれ?【今さら聞けない社会人のマナー】 [13:30 5/25] キャリア |