正規表現

2023-07-01 (土) 22:13:41

正規表現とは

名称

  • Regular Expression
  • 正規式
  • 記号列

概要

  • 文字列の状態を抽象的に表現したもの。
  • パターン定義法

構文の種類

  • SRE
    • Simple Regular Expression
  • BRE
    • Basic Regular Expression
  • ERE
    • Extended Regular Expression

ツール

検索

基本正規表現(BRE)

^行の先頭
$行の末尾
\A文字列の先頭
\z文字列の末尾
.任意の1文字
*直前の指定の0回以上の繰り返し
\d0~9の数値
\s半角スペース
\t半角タブ
\w英数字とアンダースコア(_)
[ ]カッコ内のいずれか1文字
[^]カッコ内に存在しない1文字
( )カッコ内の文字をグループ化する

拡張正規表現(ERE)

?直前の指定の0回か1回の繰り返し
+直前の指定の1回以上の繰り返し
{n}直前の指定のn回以上の繰り返し
{n,m}直前の指定のn回〜m回の繰り返し
|左右のいずれかにマッチ

使用例

  • 文字の種類
    • [a-z] ※英字(小文字のみ)
    • [A-Z] ※英字(大文字のみ)
    • [0-9] ※数字
    • [a-zA-Z0-9] ※英数字
  • 文字数
    • {1} ※1文字
    • {10} ※10文字
    • {1,10} ※範囲:1〜10文字
  • 組合せ(文字の種類、文字数)
    • [a-z]{10} ※英字(小文字のみ)が10文字
    • [A-Z][0-9]{9} ※英字(大文字のみ)に続く2〜9文字目が数字
    • (http|https) ※httpまたはhttps
  • その他
    • ^[ぁ-ん]+$ ※ひらがなのみの行

JavaScript

  • Stringに対するメソッド
    • String
    • match
    • replace
    • search
    • split

正規表現とセキュリティ

  • ReDoS
    • Regular Expressions DoS
    • 脆弱な正規表現として、処理に時間がかかる正規表現の条件で処理を実行させる

関連用語