今回は正規表現でハイフンが入った文字列をチェックする方法について説明します。

ハイフンを正規表現として使用する場合は基本的にそのまま記述すればOKですが、[a-z]や[0-9]のように[]の間に記述した場合は特殊文字として扱われます。
[]の間に記述する場合はエスケープが必要です。

本記事の内容は以下の通り。

・正規表現でハイフンを記述する方法
・Pythonでの正規表現+ハイフンマッチ例

正規表現のエスケープまとめ>>Python正規表現の記号エスケープ処理

Pythonの正規表現チェッカー
Pythonの正規表現チェッカーを作成してみました。
興味がある方は覗いてみてください。
>>正規表現チェッカー for Python

正規表現でハイフンを記述する方法

ハイフンを正規表現でマッチングさせたい場合、基本的にはそのまま記述できますが、[a-z]や[0-9]のように[]の間に記述した場合はエスケープ処理が必要となります。エスケープする場合は文字をエスケープしたい場合は直前にバックスラッシュ(\)を挿入します。

例1)
aaa-abc\.com

この場合はそのままでOKです。
(「.」はエスケープがいります。)

例2)
\[aaa-abc\.com\] []がエスケープされている場合もそのまま使用できます。

例3)
a[abc\-]bc\.com

[]の中でハイフンを使いたい場合はエスケープが必要です。
ちなみに[abc\-]は「a」,「b」,「c」,「-」のいずれか1字と一致するか否かを意味します。

正規表現のエスケープについては「Pythonと正規表現の基本」の「Python正規表現の記号エスケープ処理」の章にまとめています。

Pythonでの正規表現+ハイフンマッチ例

Pythonで正規表現をチェックする場合は「re」ライブラリを使用します。
今回は説明するマッチ例は以下の通り。

・ハイフンを文字列としてマッチさせたい場合の記述例
・ハイフンを特殊記号として使う場合の記述例

イフンを文字列としてマッチさせたい場合の記述例

Pythonで正規表現+ハイフンを記述する例は以下の通りです。

通常の場合はそのまま使えます。

◆実行結果
re.Match object; span=(0, 11), match=’aaa-abc.com’

[]の中では

◆実行結果
re.Match object; span=(0, 8), match=’a-bc.com’

※補足
「aaa\-abc\.com」のように記述した場合でもハイフンにマッチできます。
一律エスケープしてしまっても動作上は問題ありません。

ハイフンを特殊記号として使う場合の記述例

ハイフンは[]の中でのみ特殊記号として機能します。
[a-z]:小文字
[A-Z]:大文字
[0-9]:数字
[あ-ん]:ひらがな

[a-z0-9]のように複数の大文字

◆実行結果

ひらがなや片仮名を使う方法についてはこちらもお読みください。
正規表現で英数字を使う方法
正規表現でひらがなやカタカナを使う方法

正規表現の特殊記号については「Pythonの正規表現で用いる特殊記号一覧」にまとめています。

◆オススメ記事
正規表現でピリオド(ドット)を指定するには?

まとめ

今回は正規表現でハイフンを使う方法について紹介しました。

ハイフンは基本的にはそのまま使えますが、[]の間に記述された場合は特殊文字として扱われるためエスケープが必要となります。
特殊文字と扱われるケースがあることを覚えておきましょう。

正規表現は複雑に見えますが、一つ一つの記号の意味を紐解いて行けば理解できます。

正規表現のエスケープまとめ>>Python正規表現の記号エスケープ処理