正規表現 のバックアップソース(No.3)

#author("2022-02-12T10:19:50+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
--Regular Expressions [[DoS]]
--脆弱な正規表現として、処理に時間がかかる正規表現の条件で処理を実行させる

*関連用語 [#f236c31a]
-[[言語]]