1

Javaでは、次の正規表現

To: a@b\.com.*Subject: Please verify your email address

どういうわけか、このテキストで一致するものが見つかりません:

Dez 21, 2012 10:29:58 AM com.google.appengine.api.datastore.dev.LocalDatastoreService init
INFO: Local Datastore initialized: 
    Type: High Replication
    Storage: In-memory
Dez 21, 2012 10:29:58 AM com.google.appengine.api.mail.dev.LocalMailService log
INFO: MailService.send
Dez 21, 2012 10:29:58 AM com.google.appengine.api.mail.dev.LocalMailService log
INFO:   From: 
Dez 21, 2012 10:29:58 AM com.google.appengine.api.mail.dev.LocalMailService log
INFO:   To: a@b.com
Dez 21, 2012 10:29:58 AM com.google.appengine.api.mail.dev.LocalMailService log
INFO:   Subject: Please verify your email address
Dez 21, 2012 10:29:58 AM com.google.appengine.api.mail.dev.LocalMailService log
INFO:   Body:
Dez 21, 2012 10:29:58 AM com.google.appengine.api.mail.dev.LocalMailService log
INFO:     Content-type: text/plain
Dez 21, 2012 10:29:58 AM com.google.appengine.api.mail.dev.LocalMailService log
INFO:     Data length: 4

私のJavaコードは次のようになります。

    Matcher matcher = Pattern.compile(regex, Pattern.MULTILINE).matcher(input);
    if (matcher.find()) {
        ...
    }

このツールを使用してオンラインでテストするとパターンが機能するように見えるため、これは少し奇妙です:http: //regexpal.com

したがって、Javaはパターンを少し異なって解釈している必要があります。のエラーメッセージを取得する方法はありますMatcherか?

更新それは見つける必要があります:

To: a@b.com
Dez 21, 2012 10:29:58 AM com.google.appengine.api.mail.dev.LocalMailService log
INFO:   Subject: Please verify your email address
4

1 に答える 1

9

Pattern.DOTALLの代わりに使用することをお勧めしますPattern.MULTILINE

DOTALL一致する.改行を作成します。(これはあなたが望むものです)

MULTILINE行ごとに作成^および動作します。$

于 2012-12-21T10:46:14.623 に答える