Movatterモバイル変換


[0]ホーム

URL:


はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマーク
  • テクノロジー
  • 遅いッ!遅すぎるッ!Java の正規表現のお話。 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • Twitterでシェア
  • Facebookでシェア

気に入った記事をブックマーク

  • 気に入った記事を保存できます
    保存した記事の一覧は、はてなブックマークで確認・編集ができます
  • 記事を読んだ感想やメモを書き残せます
  • 非公開でブックマークすることもできます
適切な情報に変更

エントリーの編集

loading...

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。

タイトルガイドライン

このページのオーナーなので以下のアクションを実行できます

タイトル、本文などの情報を
再取得することができます
コメントを非表示にできますコメント表示の設定

ブックマークしました

ここにツイート内容が記載されますhttps://b.hatena.ne.jp/URLはspanで囲んでください

Twitterで共有

ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します

339usersがブックマークコメント50

    ガイドラインをご確認の上、良識あるコメントにご協力ください

    0/0
    入力したタグを追加

    現在プライベートモードです設定を変更する

    おすすめタグタグについて

      よく使うタグ

        遅いッ!遅すぎるッ!Java の正規表現のお話。 - Cybozu Inside Out | サイボウズエンジニアのブログ

        ガイドラインをご確認の上、良識あるコメントにご協力ください

        0/0
        入力したタグを追加

        現在プライベートモードです設定を変更する

        おすすめタグタグについて

          よく使うタグ

            はてなブックマーク

            はてなブックマークで
            関心をシェアしよう

            みんなの興味と感想が集まることで
            新しい発見や、深堀りがもっと楽しく

            ユーザー登録

            アカウントをお持ちの方はログインページ

            記事へのコメント50

            • 注目コメント
            • 新着コメント
            kits
            最初から (|) を避けて [0-9A-Za-z-\\%_+!/=.] のように書くかなあ。

            その他
            miyakawa_taku
            文中の水島さんのコメントの通り、後方参照を使うような、有限オートマトンで表せないパターンは、原理的に線形時間ではマッチできないので、不正確な記述と思われます。たぶん内部的にエンジンを切り替えてる。

              その他
              kmizushima
              (コメント欄に書いた者と同一人物です)コメント参照:

                その他
                m-naze
                ああそうかORだから入力一文字ごとにバックトラック(不一致が発生したときに備えて保存しておくべき状態)が倍々に増えていくのか…。

                  その他
                  hs_hachi
                  昔メールアドレスチェックの正規表現書いて、ものすごい長いアドレスが来た時に落としたのはいい思い出(よくない

                  その他
                  zilog80
                  javaのAPIってどうも垢抜けないんだよなあ。使い勝手や完成度などの面で。Javaをあまり好きになれない理由の一つ。

                  その他
                  yujiorama
                  対数で増えていく時間…怖いな

                  その他
                  dekasasaki
                  Javaが対処してくれるのが一番楽だよなあ、と思ってみたりする。

                    その他
                    w1234567
                    これぐらいだったら外部ライブラリ使うより自前で解析したほうがいいよね

                      その他
                      uskey
                      RE2/Jよいな。用途によって使い分けるのが良さそう。

                        その他
                        decoy2004
                        Google 製の RE2/J はバックトラッキングしない。 『マッチにかかる時間が入力文字列に対して線形で済むことを保証してくれており、今回のようにマッチ時間が倍々で増えていくことが無いとしています。』

                        その他
                        masa8aurum
                        内容がよく理解できなかったので、また調べながら読む。

                        その他
                        ymori76
                        ほーう。。メモメモ。

                          その他
                          naga_sawa
                          Javaの正規表現エンジンはパターンによってはバックトラック走って重くなる場合がある

                          その他
                          mas-higa
                          本の宣伝だった!!

                          その他
                          airj12
                          「バックトラッキングを用いた正規表現エンジンはほとんどの場合にはうまく動きますが、稀に今回のようにマッチに膨大な時間がかかってしまうことがあります。」その辺をもうちょっと詳しく…(自分で考えろ

                          その他
                          kimutansk
                          単にマッチングさせるだけなら、後方参照は不要ですからね。最初からそれがオミットされているなら納得な結果ではあります。

                          その他
                          waman
                          『結論から言うと、今回の現象の原因はアンダースコアでした。』『RE2/J』

                          その他
                          kuxttoba
                          良い正規表現ライフ…

                            その他
                            rryu
                            \wはロケールとかで内容が変わるから[a-zA-Z]の代わりに使うのは不適切な気がする。

                            その他
                            stealthinu
                            javaの正規表現で遅くなる場合の話。そういう場合でもGoogleのRE2/Jだと速いんだそうな。

                            その他
                            kabochatori
                            本筋とずれるかもだけど、"@"で分割してからマッチングしたほうがいいと思う。

                              その他
                              tsekine
                              https://github.com/google/re2/blob/master/doc/syntax.txt RE2J も多分一緒。

                                その他
                                kits
                                kits最初から (|) を避けて [0-9A-Za-z-\\%_+!/=.] のように書くかなあ。

                                2015/05/12リンク

                                その他
                                papiro
                                単語区切りの表現とアンダースコア_に注意

                                その他
                                zilog80
                                zilog80javaのAPIってどうも垢抜けないんだよなあ。使い勝手や完成度などの面で。Javaをあまり好きになれない理由の一つ。

                                2015/05/12リンク

                                その他
                                easy-breezy
                                欲しいとこを取る、ってことばかりでパフォーマンスを意識したことがなかった...

                                  その他
                                  hs_hachi
                                  hs_hachi昔メールアドレスチェックの正規表現書いて、ものすごい長いアドレスが来た時に落としたのはいい思い出(よくない

                                  2015/05/12リンク

                                  その他
                                  t-murachi
                                  Java って PCRE 使ってるんじゃなかったっけ? 後読みアサーションで解決できないん? あと \w って Unicode 環境だと半角英数字以外のあらゆる言語のアルファベットにマッチしそうな悪寒が… (調べずに書いてます)

                                  その他
                                  ginzi009
                                  遅いッ!遅すぎるッ!Java の正規表現のお話。

                                  その他
                                  surume000
                                  googleありがとう

                                  その他
                                  kotesaki
                                  正規表現もライブラリによりこれだけ実行時間が違うんだなー

                                    その他
                                    jewel12
                                    ("______________________________")

                                      その他
                                      miyakawa_taku
                                      miyakawa_taku文中の水島さんのコメントの通り、後方参照を使うような、有限オートマトンで表せないパターンは、原理的に線形時間ではマッチできないので、不正確な記述と思われます。たぶん内部的にエンジンを切り替えてる。

                                        2015/05/12リンク

                                        その他
                                        babydaemons
                                        さすが、Google先生! "In the worst case, the java.util.regex matcher may run forever, or exceed the available stack space and fail; this will never happen with RE2/J."

                                        その他
                                        a2ikm
                                        \wが_を含むの初めて知った。見慣れないからだいたい\w使わずに[]で列挙してた

                                        その他
                                        raimon49
                                        RE2/J もともとの原因は、標準ライブラリの正規表現パターン\wの中にアンダースコアも含めれていることだった

                                        その他
                                        tachesimazzoca
                                        https://swtch.com/~rsc/regexp/regexp1.html

                                        その他
                                        clavier
                                        遅いッ!遅すぎるッ!Java の正規表現のお話。 | Cybozu Inside Out | サイボウズエンジニアのブログ

                                        その他

                                        注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

                                        リンクを埋め込む

                                        以下のコードをコピーしてサイトに埋め込むことができます

                                        プレビュー
                                        アプリのスクリーンショット
                                        いまの話題をアプリでチェック!
                                        • バナー広告なし
                                        • ミュート機能あり
                                        • ダークモード搭載
                                        アプリをダウンロード

                                        関連記事

                                          usersに達しました!

                                          さんが1番目にブックマークした記事「遅いッ!遅すぎる...」が注目されています。

                                          気持ちをシェアしよう

                                          ツイートする

                                          遅いッ!遅すぎるッ!Java の正規表現のお話。 - Cybozu Inside Out | サイボウズエンジニアのブログ

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

                                          ブックマークしたユーザー

                                          • techtech05212023/11/29techtech0521
                                          • takayuki0072020/03/09takayuki007
                                          • eichisanden2017/12/07eichisanden
                                          • uskey2017/07/13uskey
                                          • m-nakamata2016/04/27m-nakamata
                                          • decoy20042016/02/01decoy2004
                                          • tohokuaiki2015/10/23tohokuaiki
                                          • tezukam2015/08/10tezukam
                                          • f99aq2015/08/04f99aq
                                          • carme-264pp2015/06/21carme-264pp
                                          • jkltf2015/06/11jkltf
                                          • nagasama2015/06/03nagasama
                                          • masa8aurum2015/05/26masa8aurum
                                          • ymori762015/05/25ymori76
                                          • shinlinsui2015/05/20shinlinsui
                                          • berlysia2015/05/20berlysia
                                          • caretta22015/05/20caretta2
                                          • l-_-ll2015/05/19l-_-ll
                                          すべてのユーザーの
                                          詳細を表示します

                                          ブックマークしたすべてのユーザー

                                          同じサイトの新着

                                          同じサイトの新着をもっと読む

                                          いま人気の記事

                                          いま人気の記事をもっと読む

                                          いま人気の記事 - テクノロジー

                                          いま人気の記事 - テクノロジーをもっと読む

                                          新着記事 - テクノロジー

                                          新着記事 - テクノロジーをもっと読む

                                          同時期にブックマークされた記事

                                          いま人気の記事 - 企業メディア

                                          企業メディアをもっと読む

                                          はてなブックマーク

                                          公式Twitter

                                          はてなのサービス

                                          • App Storeからダウンロード
                                          • Google Playで手に入れよう
                                          Copyright © 2005-2025Hatena. All Rights Reserved.
                                          設定を変更しましたx

                                          [8]ページ先頭

                                          ©2009-2025 Movatter.jp