正規表現メモ
概要
業務で正規表現を作成していた時によく使った正規表現のメモ
自分用の備忘録なので、超基礎的なこととかも含みます。
自分が分かればいいので、雑に書いてあります。
よく使っていた正規表現
\d
数字。1~9の何かしら1文字。
\d{0,10}みたいな感じで文字数の範囲を指定しながら使っていた。
\w
アンダーバーと半角英数字の何かしら1文字。
\w{0,10}みたいな感じで文字数の範囲を指定しながら使っていた。
\S
空白以外の何かしら1文字。
記号、ひらがな、漢字etcが全部含まれている。
\S{0,10}みたいな感じで文字数の範囲を指定しながら使っていた。
\s
空白文字。
正規表現にはほかにも空白文字があるけどこれ1つで済ませてた。
\d{0,10}\sみたいな感じで空白が存在するところに使っていた。
\n、\r\n
改行コード。
正規表現にはほかにも空白文字があるけ\n、\r\nのどっちかを使ってた。
この2つの違いは知らない。OSで違うみたい。ちゃんと調べた方がいい。
\d{0,10}\nみたいな感じで改行が存在するところに使っていた。
欲張りたいときは\d{0,10}(\n|\r\n)
*
直前のパターンを0回以上連続させるやつ。
\s*みたいな感じで使っていた。
+
直前のパターンを1回以上連続させるやつ。
\s+みたいな感じで使っていた。
?
直前のパターンを0回又は1回連続させるやつ。
最初どこで使うのか分からなかったけど、使ってみると意外とできるやつ。便利。
\s?みたいな感じで使っていた。
{N,M}
直前のパターンを連続させるやつ。
1.{2} 直前のパターンを2回連続
2.{2,} 直前のパターンを2回以上連続
3.{,2} 直前のパターンを2回以下連続
4.{2,10} 直前のパターンを2回以上10回以下連続
色々使い方がある。
よく使っていたのは4番目。
\d{0,10}みたいな感じで使っていた。
[abc]
カッコのなかの文字から何かしら1文字。
制限したい文字があるときに使っていた。
[\r\n|\s]みたいな感じで使っていた。
[^abc]
カッコのなか以外の文字から何かしら1文字。
制限したい文字があるときに使っていた。
[^A-Z\s\r\n]みたいな感じで使っていた。
A|B
SQLでいうところのOR。
(\n|\r\n)みたいな感じで使っていた。
カッコをつけないと見づらいのでカッコで囲むこうにしている。
$
テキストの最終位置。
\d{1,10}[\s\S]*?(?=\r\n\d{1,10}|$)みたいな感じで使っていた。
データの始まり~何かしらデータ(どんな文字も入る)~次のデータの始まり~テキスト終了
こんな感じのデータから次のデータの始まり~テキスト終了を取りたいときに使っていた。
.*
同じ行の最後まで取得してくれるやつ。
行をまとめて取得するときに便利。
\d{0,10}.*みたいな感じで条件に合致する行を取得する時に使っていた。
[\s\S]*?
全ての文字を取得してくれるやつ。
[\s\S]が全ての文字って意味。
?が貪欲マッチというやつ。あんまり意味が分かっていない。
複数行まとめてマッチさせるときに使っていた。
\d[\s\S]?(?=\d)みたいな感じで使っていた。
今回の業務では正規表現で規則性のあるデータを抜き出す正規表現を作成する感じで、
データの始まり~何かしらデータ(どんな文字も入る)~次のデータの始まり
みたいなデータが多かったので肯定・先読みと合わせた使い方が多かった。
(?=R)
肯定先読み。
カッコの中に一致する文字を探すけど、結果には反映されない。
肯定先読みの前の文字までをマッチする。便利。
(?<=\r\n)\d{1,10}[\s\S]*?(?=\r\n\d{1,10})みたいな感じで使っていた。
(?<=R)
肯定後読み。
カッコの中に一致する文字を探すけど、結果には反映されない。
肯定後読みの後の文字をマッチする。便利。
(?<=\r\n)\d{1,10}[\s\S]*?(?=\r\n\d{1,10})みたいな感じで使っていた。
正規表現を作成するときに使っていたサイト
初めて記事を書いてみて
markdown記法を全く使ったことがなかったので、Zenn公式様の(https://zenn.dev/zenn/articles/markdown-guide) を見ながら書いてました。公式様の優しさが沁みます。
Discussion