今回は正規表現でハイフンが入った文字列をチェックする方法について説明します。
ハイフンを正規表現として使用する場合は基本的にそのまま記述すればOKですが、[a-z]や[0-9]のように[]の間に記述した場合は特殊文字として扱われます。
[]の間に記述する場合はエスケープが必要です。
本記事の内容は以下の通り。
・正規表現でハイフンを記述する方法
・Pythonでの正規表現+ハイフンマッチ例
正規表現のエスケープまとめ>>Python正規表現の記号エスケープ処理
目次
正規表現でハイフンを記述する方法
ハイフンを正規表現でマッチングさせたい場合、基本的にはそのまま記述できますが、[a-z]や[0-9]のように[]の間に記述した場合はエスケープ処理が必要です。ハイフンをエスケープしたい場合は直前にバックスラッシュ()を挿入します。
例1)[]の外ではエスケープ不要
aaa-abc.com
例2)[]がエスケープされている場合もエスケープ不要
[aaa-abc.com]
例3)[]の中でハイフンを使いたい場合はエスケープが必要
a[abc-]bc.com
ちなみに[abc-]は「a」,「b」,「c」,「-」のいずれか1字と一致するか否かを意味します。
ハイフンの全角・半角のマッチ
ハイフンの全角と半角は別の文字として扱われるため片方だけマッチさせたい場合はマッチさせたい方を書けばOKです。
半角と全角の両方をマッチさせたい場合は以下のように()でくくり「|」で区切って記述します。
1 2 3 4 5 6 7 | # 半角だけマッチさせたい場合 'a-bc' # 全角だけマッチさせたい場合 'a(―)bc' # 両方マッチさせたい場合 'a(-|―)bc' |
正規表現のエスケープについては「Python正規表現の特殊記号と記述方法まとめ」の「Python正規表現の記号エスケープ処理」の章にまとめています。
Pythonでの正規表現+ハイフンマッチ例
Pythonで正規表現をチェックする場合は「re」ライブラリを使用します。
今回は説明するマッチ例は以下の通り。
・ハイフンを文字列としてマッチさせたい場合の記述例
・ハイフンを特殊記号として使う場合の記述例
ハイフンを文字列としてマッチさせたい場合の記述例
Pythonで正規表現+ハイフンを記述する例は以下の通りです。
通常の場合はそのまま使えます。
1 2 3 | import re pattern = re.compile('aaa-abc.com') pattern.match('aaa-abc.com') |
◆実行結果
re.Match object; span=(0, 11), match='aaa-abc.com'
1 2 3 | bc.com」一致"]import re pattern = re.compile('a[abc-]bc.com') pattern.match('a-bc.com') |
re.Match object; span=(0, 8), match='a-bc.com'
※補足
「aaa-abc.com」のように記述した場合でもハイフンにマッチできます。
一律エスケープしてしまっても動作上は問題ありません。
ハイフンを特殊記号として使う場合の記述例
ハイフンは[]の中でのみ特殊記号として機能します。
[a-z]:小文字
[A-Z]:大文字
[0-9]:数字
[あ-ん]:ひらがな
1 2 3 4 5 | import re # プラス記号は1回以上の繰り返しを意味します pattern = re.compile('[a-z]+.com') print(pattern.match('abc.com')) |
1 | <re.match object="" span="(0," 7="" match="abc.com"></re.match> |
ひらがなや片仮名を使う方法についてはこちらもお読みください。
正規表現で英数字を使う方法
正規表現でひらがなやカタカナを使う方法
正規表現の特殊記号については「Pythonの正規表現で用いる特殊記号一覧」にまとめています。
まとめ
今回は正規表現でハイフンを使う方法について紹介しました。
ハイフンは基本的にはそのまま使えますが、[]の間に記述された場合は特殊文字として扱われるためエスケープが必要となります。
特殊文字と扱われるケースがあることを覚えておきましょう。
正規表現は複雑に見えますが、一つ一つの記号の意味を紐解いて行けば理解できます。
正規表現のエスケープまとめ>>Python正規表現の記号エスケープ処理