Java多行正则表达式调试

Mor*_*sen 1 java regex multiline

在Java中,使用以下正则表达式

To: a@b\.com.*Subject: Please verify your email address
Run Code Online (Sandbox Code Playgroud)

不知何故在这段文字中找不到匹配:

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
Run Code Online (Sandbox Code Playgroud)

我的Java代码如下所示:

    Matcher matcher = Pattern.compile(regex, Pattern.MULTILINE).matcher(input);
    if (matcher.find()) {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

这有点奇怪,因为当我使用这个工具在线测试时,模式似乎有效: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
Run Code Online (Sandbox Code Playgroud)

Seb*_*olm 9

你会想用Pattern.DOTALL而不是Pattern.MULTILINE.

DOTALL使.比赛换行.(这是你想要的)

MULTILINE以每行为基础制作^$工作.