萌えハッカーニュースリーダー

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

出典: https://timkellogg.me/blog/2023/07/11/regex
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

残念!もっと私に注目するのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search