SlideShare a Scribd company logo
正規表現の�
�z�の話
あるちょっと遅そうな正規表現を�
�⾼速化した話
Kazuhiro�NISHIYAMA
第67回�Ruby関⻄�勉強会
2015/06/13
自⼰紹介
twitter�や�github�では�@znz
Ruby�関連
Ruby�(CRuby)�のコミッター
Ruby�関係でいろいろ
るびま�(Rubyist�Magazine)�とか
http://magazine.rubyist.net/
るりま�(Ruby�リファレンスマニュア
ル)�とか
http://docs.ruby-lang.org/ja/
Ruby�関連のイベントでの発表
とある正規表現
��������
遅そう
⽂字列末尾以外にもマッチする
⽂字クラスを使う
�������
速くなった(ベンチマークは後で)
z�を使う
��������
�:�⾏末にマッチ
��:�⽂字列末尾のみにマッチ
もっと速くなった
ベンチマーク
�������������������
���������������
�������������������
���������������������
��������
���������������������
������������������������������������������������������
������������������������������������������������������
������������������������������������������������������
������������������������������������������������������
���
ベンチマーク結果�(1)
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
ベンチマーク結果�(2)
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
まとめ
1⽂字の場合は選択�(ん|ン)�では
なく⽂字クラス�[んン]�を使おう
⽂字列末尾は�$�ではなく�z

More Related Content

More from Kazuhiro Nishiyama

docs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えた
docs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えたdocs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えた
docs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えた
Kazuhiro Nishiyama
 
Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27
Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27
Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27
Kazuhiro Nishiyama
 
lilo.linux.or.jp を buster から bullseye に上げた
lilo.linux.or.jp を buster から bullseye に上げたlilo.linux.or.jp を buster から bullseye に上げた
lilo.linux.or.jp を buster から bullseye に上げた
Kazuhiro Nishiyama
 
小規模個人アプリをRails 7.xにバージョンアップした話
小規模個人アプリをRails 7.xにバージョンアップした話小規模個人アプリをRails 7.xにバージョンアップした話
小規模個人アプリをRails 7.xにバージョンアップした話
Kazuhiro Nishiyama
 
Ruby リファレンスマニュアル改善計画 2022 進捗報告
Ruby リファレンスマニュアル改善計画 2022 進捗報告Ruby リファレンスマニュアル改善計画 2022 進捗報告
Ruby リファレンスマニュアル改善計画 2022 進捗報告
Kazuhiro Nishiyama
 
fukuoka03-rubima-reboot-rubyist-magazine-reboot.pdf
fukuoka03-rubima-reboot-rubyist-magazine-reboot.pdffukuoka03-rubima-reboot-rubyist-magazine-reboot.pdf
fukuoka03-rubima-reboot-rubyist-magazine-reboot.pdf
Kazuhiro Nishiyama
 
rubykaigi2022-rurema-history-and-future.pdf
rubykaigi2022-rurema-history-and-future.pdfrubykaigi2022-rurema-history-and-future.pdf
rubykaigi2022-rurema-history-and-future.pdf
Kazuhiro Nishiyama
 
qemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみたqemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみた
Kazuhiro Nishiyama
 
systemd 再入門
systemd 再入門systemd 再入門
systemd 再入門
Kazuhiro Nishiyama
 
Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集
Kazuhiro Nishiyama
 
livedoor天気API終了対応
livedoor天気API終了対応livedoor天気API終了対応
livedoor天気API終了対応
Kazuhiro Nishiyama
 
Wireguard 実践入門
Wireguard 実践入門Wireguard 実践入門
Wireguard 実践入門
Kazuhiro Nishiyama
 
workflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考えるworkflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考える
Kazuhiro Nishiyama
 
あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能
Kazuhiro Nishiyama
 
Dockerのオフィシャルrubyイメージとは?
Dockerのオフィシャルrubyイメージとは?Dockerのオフィシャルrubyイメージとは?
Dockerのオフィシャルrubyイメージとは?
Kazuhiro Nishiyama
 
チャットボットのススメ
チャットボットのススメチャットボットのススメ
チャットボットのススメ
Kazuhiro Nishiyama
 
Dokku の紹介
Dokku の紹介Dokku の紹介
Dokku の紹介
Kazuhiro Nishiyama
 
Action Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみたAction Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみた
Kazuhiro Nishiyama
 
Ruby svn to git
Ruby svn to gitRuby svn to git
Ruby svn to git
Kazuhiro Nishiyama
 
Ruby 2.6 Update
Ruby 2.6 UpdateRuby 2.6 Update
Ruby 2.6 Update
Kazuhiro Nishiyama
 

More from Kazuhiro Nishiyama (20)

docs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えた
docs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えたdocs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えた
docs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えた
 
Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27
Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27
Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27
 
lilo.linux.or.jp を buster から bullseye に上げた
lilo.linux.or.jp を buster から bullseye に上げたlilo.linux.or.jp を buster から bullseye に上げた
lilo.linux.or.jp を buster から bullseye に上げた
 
小規模個人アプリをRails 7.xにバージョンアップした話
小規模個人アプリをRails 7.xにバージョンアップした話小規模個人アプリをRails 7.xにバージョンアップした話
小規模個人アプリをRails 7.xにバージョンアップした話
 
Ruby リファレンスマニュアル改善計画 2022 進捗報告
Ruby リファレンスマニュアル改善計画 2022 進捗報告Ruby リファレンスマニュアル改善計画 2022 進捗報告
Ruby リファレンスマニュアル改善計画 2022 進捗報告
 
fukuoka03-rubima-reboot-rubyist-magazine-reboot.pdf
fukuoka03-rubima-reboot-rubyist-magazine-reboot.pdffukuoka03-rubima-reboot-rubyist-magazine-reboot.pdf
fukuoka03-rubima-reboot-rubyist-magazine-reboot.pdf
 
rubykaigi2022-rurema-history-and-future.pdf
rubykaigi2022-rurema-history-and-future.pdfrubykaigi2022-rurema-history-and-future.pdf
rubykaigi2022-rurema-history-and-future.pdf
 
qemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみたqemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみた
 
systemd 再入門
systemd 再入門systemd 再入門
systemd 再入門
 
Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集
 
livedoor天気API終了対応
livedoor天気API終了対応livedoor天気API終了対応
livedoor天気API終了対応
 
Wireguard 実践入門
Wireguard 実践入門Wireguard 実践入門
Wireguard 実践入門
 
workflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考えるworkflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考える
 
あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能
 
Dockerのオフィシャルrubyイメージとは?
Dockerのオフィシャルrubyイメージとは?Dockerのオフィシャルrubyイメージとは?
Dockerのオフィシャルrubyイメージとは?
 
チャットボットのススメ
チャットボットのススメチャットボットのススメ
チャットボットのススメ
 
Dokku の紹介
Dokku の紹介Dokku の紹介
Dokku の紹介
 
Action Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみたAction Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみた
 
Ruby svn to git
Ruby svn to gitRuby svn to git
Ruby svn to git
 
Ruby 2.6 Update
Ruby 2.6 UpdateRuby 2.6 Update
Ruby 2.6 Update
 

正規表現の \z の話