以下に、正規表現の応用例をいくつか示します。これらは実際に使われることが多いパターンや興味深いテクニックを含んでいます。
1. パスワードの検証
要件
- 8文字以上
- 1つ以上の大文字
- 1つ以上の小文字
- 1つ以上の数字
- 1つ以上の特殊文字(例:
!@#$%^&*)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$
説明
(?=.*[a-z]):小文字が少なくとも1つ必要(?=.*[A-Z]):大文字が少なくとも1つ必要(?=.*\d):数字が少なくとも1つ必要(?=.*[!@#$%^&*]):特殊文字が少なくとも1つ必要{8,}:8文字以上
2. 電話番号のフォーマット検出
要件
- 日本の電話番号形式(例:
090-1234-5678)
^0\d{1,4}-\d{1,4}-\d{4}$
説明
^0:0で始まる\d{1,4}:1~4桁の数字-:ハイフン- 最後に4桁の数字
3. 重複単語の検出
要件
文中で同じ単語が連続して使われている箇所を検出(例: I love love programming.)
\b(\w+)\s+\1\b
説明
(\w+):単語をキャプチャ\s+:空白\1:キャプチャグループ1の繰り返し
4. 数字のカンマ区切りフォーマット
要件
- 3桁ごとにカンマを入れる(例:
1,000,000)
数字の検出
^\d{1,3}(,\d{3})*$
変換の例(Pythonで実装)
import re
number = "1000000"
formatted = re.sub(r'(\d)(?=(\d{3})+$)', r'\1,', number)
print(formatted) # 出力: 1,000,000
5. メールアドレスの検出
要件
- 基本的なメールアドレス形式(例:
user@example.com)
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
説明
^[a-zA-Z0-9._%+-]+:ユーザー名部分@:アットマーク[a-zA-Z0-9.-]+:ドメイン名\.[a-zA-Z]{2,}$:TLD(トップレベルドメイン)
6. テキストからURLを抽出
要件
- HTTPまたはHTTPSで始まるURLを抽出
https?://[^\s]+
説明
https?:httpまたはhttps://:コロンとスラッシュ[^\s]+:空白以外の文字が続く
応用例(Python)
import re
text = "Check out https://example.com and http://test.com for more info."
urls = re.findall(r'https?://[^\s]+', text)
print(urls) # 出力: ['https://example.com', 'http://test.com']
7. HTMLタグの削除
要件
HTMLテキストからタグを削除し、プレーンテキストを抽出
<[^>]+>
応用例(Python)
import re
html = "<p>Hello, <b>world</b>!</p>"
text = re.sub(r'<[^>]+>', '', html)
print(text) # 出力: Hello, world!
8. 重複スペースの削除
要件
複数のスペースを1つに統一
\s{2,}
応用例(Python)
import re
text = "This is a test."
cleaned = re.sub(r'\s{2,}', ' ', text)
print(cleaned) # 出力: This is a test.
9. 日本語テキストの検出
要件
ひらがな、カタカナ、漢字を含むテキストを検出
[\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]+
応用例
この表現はPythonのregexモジュールなど、Unicode対応が強化されたライブラリで動作します。



