タグ

正規表現とjavaに関するkamatama_41のブックマーク (4)

  • 遅いッ!遅すぎるッ!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 | サイボウズエンジニアのブログ
  • Java 7 時代の String#split() 事情

    Java 7 になって String#split() の実装が変更されたことに今更ながら気付いたので、Pattern#split() や Java 6 との性能の比較をしてみたメモです。 Java 6 以前の文字列分割処理 古くから Java を触っているエンジニアであればみな当然知っていることだと思いますが、 TSV ファイルを Java のプログラムで読み込んで処理をするときなど、特定のデリミタで区切られた文字列を個々の要素に分割するときは String#split() を利用せず、事前にデリミタに対する java.util.regex.Pattern オブジェクトを生成しておき、そのオブジェクトを使い回す形で Pattern#split() を利用した方が処理効率 (処理時間) がよくなります。 これは、 String#split() の実装が実質的に Pattern.compile

    Java 7 時代の String#split() 事情
    kamatama_41
    kamatama_41 2013/05/20
    そうだったのか
  • 『[Java] 正規表現によるパターンマッチング』

    よく使うわりに、よく使い方を忘れるのでメモしておきます。 正規表現によるパターンマッチングを行うには、java.util.regex パッケージの Pattern クラスと Matcher クラスを利用します。 Pattern クラスは正規表現パターンを表すクラス、Matcher クラスはマッチングを行うクラスで、それぞれ、以下のように準備します。 String value = "This is a pen."; String pattern = "\\w+"; Pattern p = Pattern.compile(value); Matcher m = p.matcher(pattern); 最終的に使用したいのは Matcher クラスなので、以下のようにしてもいいかもしれません。 Matcher m = Pattern.compile(pattern).matcher(value)

    『[Java] 正規表現によるパターンマッチング』
  • Javaの道:文字列(7.正規表現)

    正規表現とは文字・記号を利用し、特定の文字パターンを表現することを言います。文字列が文字パターンに合致するかを確認する場合や、 文字列内の文字パターンに合致する部分を変更したりする場合に利用します。 正規表現例1 正規表現内の*は直前の文字が0回以上続くことを表します。a*bはaabやaaaaaabの文字パターンを表します。 正規表現例2 正規表現内の[ ]は[ ]内の任意の1文字が含まれることを表します。a[xyz]aはaxaやayaの文字パターンを表します。 正規表現の詳細はjava.util.regexパッケージのJava APIドキュメントをご参照ください。 java.util.regexパッケージはPatternクラス、Matcherクラスで構成されています。 Patternクラスでは正規表現をコンパイルし、正規表現処理を行うMatcherクラスのオブジェクトを生成します。 Ma

    Javaの道:文字列(7.正規表現)
  • 1