タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

regexpに関するy_uukiのブックマーク (4)

  • パフォーマンスを意識して正規表現を書く - Shin x Blog

    正規表現を書く際、どのようなパターンにマッチさせるか、どこをキャプチャするかという視点で記述することはあっても、パフォーマンスを考えて記述するというのはある程度知っている人でなければ忘れがちな視点です。 このエントリでは、バックトラックをメインに正規表現がパフォーマンスに及ぼす挙動について見ていきます。 対象の正規表現エンジン ここでは、従来型 NFA を対象としています。具体的には、PHP の preg_ 関数で利用している PCRE や mb_ereg 関数が利用している鬼車です。PerlRubyPythonJava、.NET でも従来型 NFA を採用しているので、似た挙動となるでしょう。 「従来型 NFA」や「バックトラック」などの用語については、「詳説 正規表現 第3版」のものを用いています。 バックトラックによるマッチ探査 正規表現エンジンでは、指定された文字列が、パ

    パフォーマンスを意識して正規表現を書く - Shin x Blog
    y_uuki
    y_uuki 2016/09/18
    これは良い
  • どのUNIXコマンドでも使える正規表現 - Qiita

    特定コマンドの正規表現で使えるメタ文字が何だかわからない! 正規表現自体は知っているけど、それが今から使おうとしているコマンドで使えるものなのかわからずに困っている人も多いと思うのでまとめてみた。 たった3つの正規表現メタ文字セットだけ知ればいい コマンドによって、対応している正規表現メタ文字の範囲には違いがある。しかし、最低限知っておけばよいのは2種類+1サブセットの3つだけだ。 BRE(基正規表現)メタ文字セット ERE(拡張正規表現)メタ文字セット AWKのサブセット もちろん、これ以外にもGNU拡張正規表現メタ文字セットやPerl拡張正規表現メタ文字セット、JavaScript拡張正規表現メタ文字セットなどいくつかあるのだが、「どのUNIXでも(=POSIXで)使える」という特長を持たせたいのであれば、それらは覚えても意味がないので上記の3つさえおさえておけばよい。(例えPOSI

    どのUNIXコマンドでも使える正規表現 - Qiita
  • Perl の正規表現でマッチした文字列自体を取得する今昔 - Qiita

    バージョンごとの表の絵文字は以下の意味です 使用可能 使用可能だが致命的な性能劣化を招くため忌避される (空欄) 対応前バージョン Perl 5.20 以降なら $& による方法が一番簡単ですが、それ以前のバージョンでの経緯を知っているチームメンバーから拒絶反応を受ける可能性もあります。そのプログラムが今後 Perl 5.20 より前のバージョンで実行する必要が一切ないと言えるなら $& でも問題ないと思いますが、外部公開するモジュールなどの場合は use v5.20 等で明言しないのであれば $& の使用は避けておくべきでしょう。 それぞれの手法 マッチ全体をキャプチャのカッコでくくって $1 で参照する方法 今も伝統的に行われている、マッチ全体をキャプチャのカッコでくくる方法です。 # $body から a か A で始まる単語を取り出して $match に入れる # \b は単語境界

    Perl の正規表現でマッチした文字列自体を取得する今昔 - Qiita
  • Regular Expression Matching Can Be Simple And Fast

    Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...) Russ Cox rsc@swtch.com January 2007 Introduction This is a tale of two approaches to regular expression matching. One of them is in widespread use in the standard interpreters for many languages, including Perl. The other is used only in a few places, notably most implementations of awk and grep.

  • 1