Closed10

[Scrap] 正規表現ネタ帳

ピン留めされたアイテム
へぶんへぶん

正規表現を考えるステップ

1. 正規表現 簡易チェッカー

以下の表を眺めつつ、
https://murashun.jp/article/programming/regular-expression.html

想定されるパターンを正規表現ツールに打ち込んで考える。
https://www.ymori.com/regexcheck/
以下のツールで Visualize して把握するのもいい。
https://regex-vis.com/

2. 自分の使用している言語での挙動を考える。(例: TypeScript など)

コードから離れて Playground を使用するのも良い。
https://playcode.io/new/

const str = ''
const pattern = //g
console.log(str.match(pattern))

https://www.tohoho-web.com/js/regexp.htm

3. どうしても忘れてる場合

マンガを副読本にして作業する。
https://www.amazon.co.jp/dp/B08L4FDS86/ref=cm_sw_r_tw_dp_A5R43GZ4KQ8WT9GH5TP2?_encoding=UTF8&psc=1

へぶんへぶん

避けてきた正規表現が必要になってきたので覚えようと思います。

正規表現チェッカー

https://weblabo.oscasierra.net/tools/regex/

正規表現簡易チェッカー

これは便利。使いやすい。
https://www.ymori.com/regexcheck/

へぶんへぶん

考え方

  • あいまいな部分と固定の部分を分けて考える
  • さらに、曖昧の度合いが異なる部分を分離して、それぞれの曖昧さを正規表現で指定する(って感じ?)
へぶんへぶん

そもそも正規表現は、

  • マッチするメタ文字などの規則
  • 文字列置換用の記法($1) など

上記の二つが含まれる。

へぶんへぶん

繰り返し

? はあってもなくてもの時 & 繰り返しは含まない。

へぶんへぶん

先読みマッチ

2000年という文字列があった場合、\d+年だと2000年にマッチ。\d+(?=年)だと 2000 にマッチする。
単位を含めて検索したいけど、マッチ文字列に単位を含めたくない場合に使用する。
多くのものにマッチしすぎている時に絞り込みをかける考え方で使用することもありそう。

// 西暦2000年の'2000'にマッチする
(?<=西暦)\d+(?=年)
へぶんへぶん

グルーピングの入れ子構造

グルーピングが入れ子になる場合は外側が $1 になる。

(\d{1,3}(,\d{3})*)-
このスクラップは2022/07/25にクローズされました