正規表現が学ぶ価値がある理由
適切に作成された正規表現は、50 行の手動文字列解析コードを置き換えることができます。マイクロ秒単位で実行されます。ほぼすべてのプログラミング言語で動作します。構文を理解すると、条件付きロジックを使用して実装するには何時間もかかるパターンを作成できるようになります。
障壁となるのは概念ではなく、表記です。正規表現は、一見すると意味不明に見える、高密度でシンボルの多い構文を使用します。読み方を覚えると、以前は見えなかったコード、データ、テキストのパターンが見えるようになります。
重要なパターンのクイックリファレンス
| パターン | 一致 | 例 |
|---|---|---|
\d | 0 ~ 9 の任意の数字 | \d{4} → 2025 |
\w | 文字、数字、またはアンダースコア | \w+→「ハローワールド」 |
\s | 任意の空白 | \s+→ 1 つ以上のスペース |
^ / $ | 文字列の開始/終了 | ^\d{5}$→ 正確に5桁のzip |
[ABC] | a、b、または c のいずれか | [アイオウ]→任意の母音 |
[^abc] | a、b、c 以外のすべて | [^\d]→ 数字以外 |
? | 前の 0 または 1 | 色→ 色 OR 色 |
+ | 1つ以上 | \d+→ 1 桁以上の数字 |
* | 0以上 | \d*→ 0 個以上の数字 |
{n,m} | n回からm回の間 | \d{3,5}→ 3~5桁 |
ブックマークに値するパターン
- 電子メール:
/^[\w.+-]+@[\w-]+\.[a-z]{2,}$/i - URL 抽出:
/https?:\/\/[^\s"'<>]+/g - 余分な空白を削除します。
/\s+/g→半角スペースに置き換える - ハッシュタグを抽出します:
/#[\w]+/g - 単語全体のみに一致します:
/\b単語\b/
💡 プロのヒント:を使用します。
g(最初だけでなく) すべての一致を検索するためのフラグ、私大文字と小文字を区別しないマッチングの場合、およびメートル作る^そして$文字列境界ではなく行境界に一致します。実際のほとんどの正規表現パターンには、少なくとも次のものが必要です。gまたは私.「壊滅的な後戻り」とは何ですか?
のようなパターン(a+)+applied to a long non-matching string cause exponential processing time — your regex engine gets stuck trying exponentially more combinations.重複するパターンではネストされた量指定子を避けてください。パターン(a+)+b「aaaaaaaaaaaaaaac」ではサーバーがハングします。
JavaScript 正規表現は Python と同じように機能しますか?
ほとんどの場合はいですが、名前付きグループの違いはあります (JS では(?<名前>), Pythonは使用します(?P<名前>))、いくつかの先読み/後読み機能、および文字クラス表記。このテスターは JavaScript のエンジンを使用します。動作が異なる場合はターゲット言語でテストします。