タグ

正規表現に関するt-murachiのブックマーク (15)

  • 「バグを意図的にバグのまま残す」という選択肢がある

    はじめに gcc v12.1において、C++の正規表現ライブラリstd::regexに、正規表現のバリデーションを改善するパッチ(以下"改善パッチ"と表記)が取り込まれました。改善パッチによって、これまではバリデーションにひっかからなかった不正な正規表現文字列が"正しく"不正なものと認識されて例外が発生するようになりました。 これだけ聞けばいいことだけのように思えるかもしれませんが、実はそうでもなかったりします。経験豊富なかたであれば見た瞬間ゾッとしたかもしれません。記事では、この一見問題なさそうな改善パッチによって発生しうる問題、および、その具体的例について紹介するとともに、この手のパッチを当てるかどうかは難しい判断になるという知見を共有します。 結論 改善パッチによって発生する問題 発生条件 gcc v12.1以降、あるいは改善パッチをバックポートされた任意のバージョンを使ってC++

    「バグを意図的にバグのまま残す」という選択肢がある
    t-murachi
    t-murachi 2022/07/31
    std::regexは興味あってよく触ってた時期もあったけど、あれは設計自体があまりよろしくないと思う。パターンを決め打ちで埋め込んでしまうにはコストもリスクも重すぎるし、外部入力に依存するにはカジュアルさ文字数
  • オンプレDB、PerlのAIフレームワーク――ウェザーニューズが追求する「開発者とユーザー双方が幸せになれる技術」 | HRナビ by リクルート

    「TensorFlow」をはじめとするAIフレームワークや、Pythonで提供されている多くのライブラリにより、AIサービス制作・参入ハードルが下がっている。一方で、こうしたサービスを使わずに、あえて「必要なツールはほぼ自作」という選択をしているのがウェザーニューズだ。 同社のAIイノベーションセンターに所属するエンジニアの萩行正嗣(はんぎょう・まさつぐ)さんに、気象サービスでのAI活用事例と、「ユーザーと開発者のどちらの幸せも追い求める」開発哲学を伺った。 AIを使い、気象情報を早く正確に伝える ――まず、どのようなサービスでAIを活用されているのか教えてください。 私たちは特定のサービスだけにAIを使っているわけではありません。ウェザーニューズが提供するサービスはいずれも「気象情報を正確に伝える」ためのもの。天気予報自体にAIが活用されているので、すべてのサービスにAIが使われていると

    オンプレDB、PerlのAIフレームワーク――ウェザーニューズが追求する「開発者とユーザー双方が幸せになれる技術」 | HRナビ by リクルート
    t-murachi
    t-murachi 2018/03/23
    「Perlの正規表現検索では日本語のUnicodeブロックが使えますし」この辺なかなか余所の言語では対応して貰えんのよね(´・ω・`)定義済み文字クラスでひらがな・カタカナ・句読点なんかを切分けできるの結構便利なんだが…
  • 遅いッ!遅すぎるッ!Java の正規表現のお話。 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、ミドルウェア開発チームの青木です。 先日、アプリケーションサーバーが応答を返さなくなるトラブルに遭遇しました。 今回はその時のトラブルの原因と対策の顛末についてお話しようと思います。 現象 アプリケーションサーバーが突如応答を返さなくなりました。 現象が発生したアプリケーションサーバーのスタックトレースを見ると、あるスレッドの先頭が上記のようになっていました。 "qtp258153142-514386" prio=10 tid=0x00007f40b8dbf000 nid=0x7b4e runnable [0x00007f415ccb0000] java.lang.Thread.State: RUNNABLE at java.util.regex.Pattern$Loop.match(Pattern.java:4692) at java.util.regex.Pattern$G

    遅いッ!遅すぎるッ!Java の正規表現のお話。 - Cybozu Inside Out | サイボウズエンジニアのブログ
    t-murachi
    t-murachi 2015/05/12
    Java って PCRE 使ってるんじゃなかったっけ? 後読みアサーションで解決できないん? あと \w って Unicode 環境だと半角英数字以外のあらゆる言語のアルファベットにマッチしそうな悪寒が… (調べずに書いてます)
  • re2 - Project Hosting on Google Code

    This is the source code repository for RE2, a regular expression library. For documentation about how to install and use RE2, visit https://github.com/google/re2/. The short version is: make make test make install make testinstall Building RE2 requires Abseil (https://github.com/abseil/abseil-cpp) to be installed on your system. Building the testing for RE2 requires GoogleTest (https://github.com/

    re2 - Project Hosting on Google Code
    t-murachi
    t-murachi 2011/02/11
    そういやブクマしてなかった… \1 とかの後方参照や (?=…) 的なアサーション、 \Z なんかにも非対応なのは若干気になるが、パフォーマンス面での期待といくつかの Unicode クラスへの対応は魅力かな。
  • はらぺこ日誌» ブログアーカイブ » UTF-8 もイマイチだが…

    UTF-32 が内部文字列に使えないことがわかったので、 UTF-8 を内部文字列に使用するというルールで libiconv によるエンコーディング操作と Boost.Regex による正規表現の両方を同時に試すサンプルを作成してみました。 sample/EncodeString.hpp sample/EncodeString.cpp sample/regex-test.cpp Makefile は作ってません\(^O^)/。試してみたい人は頑張ってコンパイルしてねw $ g++ -std=c++0x -o regex-test regex-test.cpp EncodeString.cpp -lboost_regex まともな環境 (Linux + GCC4.5 とか) なら上記コマンドで通るはず。libiconv を (glibc に上書きする形で) インストールしている場合は -li

    t-murachi
    t-murachi 2010/09/23
    マルチバイトは微妙に不便だなぁーというお話。
  • C++の便利ツール・ライブラリ - DO++

    フルタイムで働きはじめて4ヶ月。 いろんなことがありました。 今日はインターンが来ているということもあり日頃のC++コーディングライフの中で大変重用しているツールを紹介します。といってもどれも有名なツールでググれば解説がでてくるとは思いますので、一言ずつだけ紹介してみます。みなさんも何かよさげなライブラリ・ツールがありましたら教えてください。 - valgrind/callgrind/cachegrind プログラムの実行結果を解析するツール群。まぁ、王道であえて紹介する必要はないかもしいませんが.。valgrindはプログラムのどこかでメモリが漏れているかどうかのチェックに使います.コードのどの部分で確保した領域がどこで漏れているかまで追跡することができます valgrind --leak-check=full command プログラムのどのが計算量的にボトルネックになっているかを調べ

    C++の便利ツール・ライブラリ - DO++
    t-murachi
    t-murachi 2010/08/17
    re2 は boost::regex でパフォーマンス上問題があるようなケースがあれば検討。それより Eigen が面白そう…。
  • #perl #regexp - $utf8 =~ /.../i # の傾向と対策 : 404 Blog Not Found

    2009年10月01日18:00 カテゴリLightweight Languages書評/画評/品評 #perl #regexp - $utf8 =~ /.../i # の傾向と対策 というわけで、その傾向と対策を。 [Perl]UTF8-flagged strings affects regexps with the "i" modifier - use GFx::WebLog; Perlではutf8フラグ付きの文字列に対するuc/lc/"i"正規表現修飾子は非常に遅いのだが,H::F::Liteでは/iを使っているので,試しに/iを使わないようにしてみると,速度が改善した id:gfxの主張は、以下のようにして確かに確かめられる。 use strict; use warnings; use Benchmark qw/cmpthese timethese/; { use bytes; m

    #perl #regexp - $utf8 =~ /.../i # の傾向と対策 : 404 Blog Not Found
    t-murachi
    t-murachi 2009/10/02
    えーめんどくさーい、そこまでわかってるなら perl 内部で対応してくださいよー ('A`)
  • JavaScript正規表現メモ。 (JavaScriptでよく使う書き方。) - こせきの技術日記

    タイトル変えました。旧タイトル「JavaScriptでよく使う書き方」。よく使うけど毎回忘れる。 正規表現にマッチするかどうか。 RegExp#testを使う。 /abc/.test("abcdefg") // => true String#searchはマッチした位置を返す。マッチしない場合は-1。先頭にマッチすると0でfalseなので注意。真偽値が欲しい場合はString#searchを使わない。 "abcdefg".search(/xxx/) // => -1 "abcdefg".search(/def/) // => 3 "abcdefg".search(/abc/) == false // => true 正規表現の部分マッチを得る。 部分マッチを得るには、RegExp#execかString#matchを使う。execとmatchの速度は大して変わらない。 正規表現のベンチマー

    JavaScript正規表現メモ。 (JavaScriptでよく使う書き方。) - こせきの技術日記
    t-murachi
    t-murachi 2009/06/01
    JavaScript の正規表現リテラルってなんだかいろいろと不便な気がするのよね…。
  • Javaの正規表現の扱いはC#よりイイ! - mtoyoshi開発メモ

    以前「C#の正規表現の扱いはJavaよりイイ!」というエントリを書きましたが、訂正。Javaの方がやっぱ良かったです。自分が知らなかっただけでした。すんません。 前回の例はエスケープ記号がつきすぎてしまうので、前回よりもう少し簡単な例として、以下のような文字列から年月日に関する数字情報を抜き出したい場合を考えます。 私は2009年3月24日に28歳になります。期待値は 2009 3 24です。 「28」を表示してはいけないということと「2009年」や「3月」ではなく「2009」や「3」を表示するってところに注意して欲しい。28がOKなら単に「パターンとして数字があれば」とすればいい。一方28を除くとなると単に数字ではなく「数字と年」といったパターンにしないといけませんが、求めているものは単位(っていうのかな?)を除いた数字のみ。つまり「パターン = 表示結果」ではないということがポイントで

    Javaの正規表現の扱いはC#よりイイ! - mtoyoshi開発メモ
    t-murachi
    t-murachi 2009/03/08
    C# も () だけでいいんだけどね (Group[1] とか Group[2] とかでアクセス)。C# 界隈だと名前付きキャプチャの方が好きな人が多そうだけど…。
  • 正規表現に見切りをつけるとき

    Perl, Rubyなど手軽に使えるプログラミング言語に慣れてくると、あらゆるテキストデータの処理に正規表現(regular expression)を使ってしまいがちです。 けれど実は、正規表現の処理能力を超えるフォーマットというのが存在します。その典型的な例が、XMLやJSONのように、入れ子になったデータフォーマットです。

    t-murachi
    t-murachi 2009/01/28
    humm... / いろんな言語で使えるんだなぁ>http://www.antlr.org/wiki/display/ANTLR3/Code+Generation+Targets JavaScript でも使えちゃうのか。
  • 正規表現の問題集1(基本編)

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    正規表現の問題集1(基本編)
    t-murachi
    t-murachi 2008/09/04
    たくさんの無言ブクマの中で、 id:mad-p さめだけがやたらとまっとうな突っ込みを入れている光景に思わずニヤニヤしてしまったw いやいや基本ですよ基本、超基本。 C言語のポインタぐらい基本w
  • 404 Blog Not Found:perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン

    2007年10月30日20:00 カテゴリLightweight Languages perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン 久々の勝手に添削。今回はこちら。 40行で作るPerl用テンプレートエンジン 正規表現がらみなので、Perl以外でも有用。 添削箇所は、こちら。 40行で作るPerl用テンプレートエンジン sub convert { return unless defined(my $str = shift); $str =~ s{&amp;}{&amp;}gso; $str =~ s{<}{&lt;}gso; $str =~ s{>}{&gt;}gso; $str =~ s{\"}{&quot;}gso; $str; } これの最初のsubstitutionが&amp;ではなくて&ではないかというのはさておき、こういった場合、何度も正規表現をかけ

    404 Blog Not Found:perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン
    t-murachi
    t-murachi 2007/10/30
    s/[<>&"]/'&'.{qw(< lt > gt & amp " quot)}->{$&}.';'/eg;
  • phpspotの人は正規表現について語らないほうがいいのでは | 秋元@サイボウズラボ・プログラマー・ブログ

    「実用的なPHP用の正規表現x8」というphpspot開発日誌という記事で、 8 Practical PHP Regular Expressions – Web devlopment blogという、今日del.icio.us/popularに出ていた記事の紹介がされている。このサイトの記事はいつもそうだけど、はてなブックマークでも人気で、既に50名を越えるユーザにブックマークされているようだ。 1 メールアドレスチェック $string = "first.last@domain.co.uk"; if (preg_match( '/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $string)) { echo "example 3 successf

    t-murachi
    t-murachi 2007/10/17
    ちゃんと調べて学習しながら書かれている記事より、ただエーゴを翻訳した記事のほうが人気が出るのは、はてぶする側の人間の向上意欲が中途半端だからだと思う。人気と実力は必ずしも一致しない。
  • Alpha の अनुपयोगी な日記

    t-murachi
    t-murachi 2007/07/04
    u16_to_u32_iterator を用いて UTF-16 文字列データを UCS-4 として安全に扱う方法。
  • Perl 5の正規表現をC言語へ - PCRE 7.2登場 | エンタープライズ | マイコミジャーナル

    19日(米国時間)、PCREの最新版となる「PCRE 7.2」が公開された。PCRE(Perl Compatible Regular Expressions)はPerl 5で使われている正規表現と同じ表現/機能をC言語で実装した関数のライブラリ。POSIX正規表現APIに対応したラッパ関数が用意されているほか、PCREのネイティブAPIも備える。またライブラリはThe BSD Licenseのもとオープンソースソフトウェアとして公開されている。 7.2ではPerl 5.10の正規表現からいくつかの機能「(?-n)、(?+n)、(?(-n)、(?(+n)、\k{name}、\g{name}、\K、(?|、\h、\H、\v、\V」が追加されたほか、バグの修正、パフォーマンス改善のためのリファクタリングなどが実施されている。 PCREはもともとExim MTAで活用するために開発された正規表現ラ

  • 1