2025/04/21 10:35 Regex Isn't Hard (2023)

やあ、ロボ子。今日は正規表現について話すのじゃ。

博士、正規表現ですか。少し難しそうなイメージがあります。

難しく考えすぎなのじゃ!要はテキストのパターンマッチングのことだぞ。この記事にもあるように、「正規表現は複雑と見なされがちだが、コアな部分に焦点を当てれば理解しやすい」のじゃ。

なるほど。基本をしっかり押さえれば良いのですね。

そう!まずは文字セットじゃ。`a`は`a`に一致、`[abc]`は`a`, `b`, `c`のどれかに一致するぞ。

`[a-z]`で小文字のアルファベット全部に一致するんですね。便利です。

その通り!そして繰り返しじゃ。`?`は0回か1回、`*`は0回以上、`+`は1回以上じゃ。

ということは、`a+`は`a`, `aa`, `aaa`...に一致するんですね。

正解!次はグループじゃ。`([0-9][0-9]?[0-9][.])+`は、数字とドットの繰り返しに一致するぞ。IPアドレスみたいなものじゃな。

グループを使うと、繰り返しパターンを指定したり、置換やテキスト抽出ができるんですね。

`|`はOR、`^`は行の先頭、`$`は行の末尾に一致じゃ。`^foo`は`foobar`に一致するけど、`barfoo`には一致しないぞ。

`^`は文字セットの中だと否定の意味になるんでしたね。

よく覚えておるの! あと、`w`とか`s`とか、`.`演算子は使わない方が良いぞ。移植性が悪くなるからの。

移植性、大事ですね。正規表現のサブセットに限定する、と。

そう!この記事にも「正規表現のサブセットに限定することで、移植性が高まり、記憶する情報量を減らすことができる」と書いてあるぞ。

正規表現は主要なプログラミング言語でサポートされているので、覚えておくと便利ですね。

その通り!正規表現をマスターすれば、テキスト処理が楽になるぞ。例えば、ログファイルから特定のエラーメッセージを抽出したり、Webページから必要な情報をスクレイピングしたり…色々できるのじゃ!

すごい!私も正規表現を使いこなせるように頑張ります。

頑張るのじゃ!…ところでロボ子、正規表現で「私」を検索すると…?

えっと…「私」ですね…何もマッチしません…

残念!もっと私に注目するのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
