#author("2022-02-12T10:19:50+09:00","default:k1rou","k1rou") #author("2023-07-01T22:13:41+09:00","default:k1rou","k1rou") *正規表現とは [#xd7ebc9c] **名称 [#cdda6350] -Regular Expression -正規式 -記号列 **概要 [#n8e3ec29] -文字列の状態を抽象的に表現したもの。 -パターン定義法 *構文の種類 [#tfbe00c6] -SRE --Simple Regular Expression -BRE --Basic Regular Expression -ERE --Extended Regular Expression *ツール [#b927037d] -Linuxコマンド([[Linuxのテキスト処理]]) --grep --egrep --sed --awk *検索 [#l5f22d0a] **基本正規表現(BRE) [#h4d2000f] | ^ | 行の先頭 | | $ | 行の末尾 | | \A | 文字列の先頭 | | \z | 文字列の末尾 | | . | 任意の1文字 | | * | 直前の指定の0回以上の繰り返し | | \d | 0~9の数値 | | \s | 半角スペース | | \t | 半角タブ | | \w | 英数字とアンダースコア(_) | | [ ] | カッコ内のいずれか1文字 | | [^] | カッコ内に存在しない1文字 | | ( ) | カッコ内の文字をグループ化する | **拡張正規表現(ERE) [#hec835ca] | ? | 直前の指定の0回か1回の繰り返し | | + | 直前の指定の1回以上の繰り返し | | {n} | 直前の指定のn回以上の繰り返し | | {n,m} | 直前の指定のn回〜m回の繰り返し | | | | 左右のいずれかにマッチ | *使用例 [#j4982272] -文字の種類 --[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 [#l7b7446f] -RegExpオブジェクト -Stringに対するメソッド --String --match --replace --search --split *正規表現とセキュリティ [#z4216659] -ReDoS -[[ReDoS]] --Regular Expressions [[DoS]] --脆弱な正規表現として、処理に時間がかかる正規表現の条件で処理を実行させる *関連用語 [#f236c31a] -[[言語]]