次ログ

次ログ

ゆるりと働いているSREの技術ブログのような何か。趣味の話も書く

Goの正規表現を少し使う

前書き

Go言語の正規表現はあまり早くないらしいので、 なるべくstringsパッケージの関数を使って文字列を扱うほうが パフォーマンスが良いという話をよく聞きます。

とはいえ、正規表現をどうしても使いたくなるときはありますし、 そこまで速度が重要でないときや、使用頻度が低いときは パパッと使って問題解決したほうが良いと考えているので regexpでよく使いそうなものを調べてテストしました。

そもそも速度が求められない状況ならPythonとかLLでよくない? とか言われそうですが...

よく使いそう、の判断基準は、 僕が普段Pythonでテキストを処理するときに よく使ったもの、というだけで、完全に主観です。

目次

コード

以下はPythonとGoの正規表現のコードです。 使用したものは下記の5つの機能です。

  1. 正規表現にマッチするかどうかの判定
  2. 正規表現にマッチしたものをすべて取得する
  3. 正規表現にマッチしたものの数を取得する
  4. 正規表現にマッチしたものを置換する
  5. 後方参照で置換を行う

所感

基本的には一緒でしたが、後方参照の部分での指定で結果が変わったのが気がかりです。
全角空白を含む、名前の間の空白文字をGo言語では\sで認識できない? まだ詳細を調べてはいませんが、気をつけないといけなさそうです。