ちょっと高度な検索
前回は基本的な検索の仕方を説明しました。今回はちょっと高度な検索について説明します。
特別な意味を持つ文字 その二
前回の特殊文字に加えて、下記の特殊文字を使用します。
正規表現 | 説明 | 使用例 | 例の説明 |
| | 選択 | AA|BB|CC | AAまたはBBまたはCCに一致 |
() | グループ化 | A(01|02|03) | A01またはA02またはA03に一致 |
^ | 行の最初 | ^A | 行頭のAに一致 |
$ | 行の最後 | A$ | 行末のAに一致 |
[^A] | A以外の文字 | [^ABC]+ | DEFなど1つ以上のABC以外の文字に一致 |
\s | 空白,タブ | \s+ | 1つ以上の空白に一致 |
\S | 空白文字以外 | \S+ | 1つ以上の空白以外の文字に一致 |
\d | 数値文字 | \d+ | 123など1つ以上の数字に一致 |
\D | \d以外 | \D+ | ABCなど1つ以上の数字以外の文字に一致 |
\w | 英数文字かアンダーバー | \w+ | ABC123など1つ以上の英数文字かアンダーバーに一致 |
\W | \w以外の文字 | \W+ | -+!?など1つ以上の英数文字かアンダーバー以外(記号)に一致 |
\b | 単語の境界(\wと\Wの境界) | ABC\bDEF | ABCとDEFの間に英数文字かアンダーバー以外の文字がある文字列に一致 |
選択とグループ化を使ってみる
選択とグループ化について詳しく説明します。
すいか|メロン
と書くと、スイカまたはメロンのどちらかに一致します。これを選択といい、選択肢を|で分けて記述します。
(あまい){2}すいか
と書くと、「あまいあまいすいか」に一致します。この例では、「すいか」をグループとし、それが2回出現することを表します。グループにしたい文字列を()で囲んで記述します。
上記で説明した、選択とグループを使って、
(すいか|メロン)(アイス|シェーク)
と記述すると、「すいかアイス」、「スイカシェーク」、「メロンアイス」、「メロンシェーク」のどれかに一致するようになります。
問題を解いてみよう
- 以下はことわざとオヤジギャグを行単位で記述した文字列である。「犬」と「猫」で始まる文字列に一致する正規表現を書きなさい。
犬も歩けば棒にあたる
ニューヨークで入浴
猫に小判
梅は旨めぇ
猿も木から落ちる
飼い犬に手をかまれる
借りてきた猫
こたえ:[ ^(犬|猫).+$ ]
- 以下は麻雀牌を上がれる状態にし、行単位で記述した文字列である。各牌はスペース区切りで並べられている。九連宝燈のみに一致する正規表現を書きなさい。(九連宝燈は、1と9を3牌づつ、2〜8を1牌づつ、そして1〜9を1牌集めたもの。)
1萬 1萬 3萬 4萬 5萬 7筒 8筒 9筒 2索 3索 4索 5索 6索 7索
1萬 1萬 1萬 2萬 3萬 4萬 5萬 6萬 7萬 8萬 9萬 9萬 9萬 9萬
1萬 1萬 3萬 3萬 2筒 2筒 7筒 7筒 9筒 9筒 南 南 北 北
こたえ:[ ^(1萬 ){3,4}(2萬 )+(3萬 )+(4萬 )+(5萬 )+(6萬 )+(7萬 )+(8萬 )+(9萬 ?){3,4}$ ]
数字を検索する正規表現もあります。
|
|
1.正規表現とはなにか?
正規表現を簡単に説明すると?
2.正規表現を使う準備
まずはエディタの設定
3.正規表現サンプル集 【検索編】
検索で使える正規表現
4.正規表現サンプル集 【置換編】
置換で使える正規表現
5.正規表現のお勉強
├正規表現で検索
├少し高度な検索
├文字列置換
├最短一致について
└エスケープ文字のこと
上から順番にだんだん難しくなります
6.エディタの強調表示でテキストに色づけ
色つきで見やすくできます
7.プログラムで正規表現を使う
各種プログラム言語でも使えます
8.ナイスな記事集
ここよりスゴイ正規表現がある
|