Open10
[Scrap] 正規表現ネタ帳
ピン留めされたアイテム
正規表現を考えるステップ
1. 正規表現 簡易チェッカー
以下の表を眺めつつ、
想定されるパターンを正規表現ツールに打ち込んで考える。
以下のツールで Visualize して把握するのもいい。2. 自分の使用している言語での挙動を考える。(例: TypeScript など)
コードから離れて Playground を使用するのも良い。
3. どうしても忘れてる場合
マンガを副読本にして作業する。
避けてきた正規表現が必要になってきたので覚えようと思います。
正規表現チェッカー
正規表現簡易チェッカー
これは便利。使いやすい。
まずはこれを読む
考え方
- あいまいな部分と固定の部分を分けて考える
- さらに、曖昧の度合いが異なる部分を分離して、それぞれの曖昧さを正規表現で指定する(って感じ?)
自分の勘違いしていた部分
+
, ?
単体と +?
で合成した時は単なる合成だと思っていたが、
そうではなく、メタ文字に対して?
が付いた時は前のメタ文字の最短一致
モードになる。
そもそも正規表現は、
- マッチするメタ文字などの規則
- 文字列置換用の記法(
$1
) など
上記の二つが含まれる。
繰り返し
?
はあってもなくてもの時 & 繰り返しは含まない。
先読みマッチ
2000年
という文字列があった場合、\d+年
だと2000年
にマッチ。\d+(?=年)
だと 2000
にマッチする。
単位を含めて検索したいけど、マッチ文字列に単位を含めたくない場合に使用する。
多くのものにマッチしすぎている時に絞り込みをかける考え方で使用することもありそう。
// 西暦2000年の'2000'にマッチする
(?<=西暦)\d+(?=年)
否定的先読みはあいまいなものには使いづらそう。
グルーピングの入れ子構造
グルーピングが入れ子になる場合は外側が $1
になる。
(\d{1,3}(,\d{3})*)-
ログインするとコメントできます