タグ

qiitaとregular-expressionに関するnabinnoのブックマーク (4)

  • なぜGo言語の正規表現は遅いと言われるの? - Qiita

    はじめに Goの正規表現は遅いと言われていることが以前から疑問だったので調査してみました。 こちらの記事やこちらの記事を拝見する限り ① 現実的なユースケース(例えばURLのパースなど)ではGo言語の正規表現は使うべきではなく、stringsパッケージの標準の関数を利用した方がパフォーマンスとしては良い。 ② Go言語で正規表現を利用するために必要な"正規表現オブジェクト"を並行にアクセスするにはパフォーマンスが問題になるので注意が必要。 とあります。その理由は、それぞれ以下に集約できるようです。 ① Go言語標準の正規表現ライブラリは、正規表現と検査文字列の長さに対して常に$O(n^2)$のオーダーで計算量が増加する安定したアルゴリズムを採用している。 ② "正規表現オブジェクト"を用いたマッチング処理には排他制御が行われている。 調べてみる Go言語のpkg/regexpの公式ドキュメ

    なぜGo言語の正規表現は遅いと言われるの? - Qiita
  • Elixirで正規表現 - Qiita

    Elixirでは正規表現を使用する際に、Regexモジュールを使用します。 Document RegexはPCRE(Perl Compatible Regular Expressions) に基いています。 正規表現は ~r/pattern/ で扱われます。 optionの説明はDocumentにまかせて、 各種ファンクションを使ってみようと思います。 実行しているversionは1.2.0です。 compile(source, options \ "") sourceにはbinaryを指定します。 Elixirでbinaryとは""で囲った文字列のことです。 iex(3)> Regex.compile("AbC") {:ok, ~r/AbC/} iex(4)> {:ok, pattern} = Regex.compile("AbC") {:ok, ~r/AbC/} iex(8)> {:o

    Elixirで正規表現 - Qiita
  • TypeScriptの正規表現にマシな型をつける - Qiita

    let str = "x\\yz"; let t = str.replace(/\\(.)/, (m, s) => s.toUpperCase()); // s は any 型なので、仮に s.toUpper() と書いてもエラーにならない TypeScript は静的型がウリの言語なので、もうちょっとやりようはあるのではないか。 目標:型付き正規表現 これらの問題を解決するために、キャプチャーの型の情報を埋め込んだ型 TypedRegExp<captures> を作りたい。キャプチャーの型とは、具体的には string: 通常のキャプチャー string | undefined: 後ろに ? や * がついたもの、あるいは | の一方に含まれるもの undefined: 否定先読み (?! .. ) に含まれるキャプチャー のいずれかである。例えば、 /(a)(b)?/ という正規表現の

    TypeScriptの正規表現にマシな型をつける - Qiita
  • Hubotの正規表現を可視化する - Qiita

    # scripts/nekobot.coffee #Commands: # msg - Return a message msg # module.exports = (robot) -> robot.hear /(.*)$/i, (msg) -> room = msg.envelope.room text = msg.message.text text_en = encodeURIComponent text if room == "test" msg.send room, "#{text} " 前回書いたとりあえず全てに反応するrobot.hear /(.*)$/i, (msg) ->くらいなら可視化しなくても問題はない。。。 しかし皆がSlackでふざけすぎた結果がコレだ # scripts/nekobot.coffee #Commands: # しいたけ - Return a me

    Hubotの正規表現を可視化する - Qiita
  • 1