多行正则表达式匹配的问题

fcpgris 2010-12-13 08:05:05
这段代码我觉得应该打印出true啊~~可是怎么老是false


String patternStr = "FAIL:\\s?.*\\r?\\n";
String str = "Summary\n" +
"SKIP: jjddf\n" +
"PASS: lalala\n" +
"FAIL: GOOD LUCK\n" +
"SKIP: WHY\n";

Pattern p = Pattern.compile(patternStr, Pattern.MULTILINE);
Matcher m = p.matcher(str);

boolean result = m.matches();

System.out.println(result);

...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zn85600301 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxcnn 的回复:]

matches()是查看正则是否匹配源字符串的整体,相当于在正则的首尾分别加了“^”和“$”的限制

而你的例子,显然是匹配了其中的子串,而不是源字符串的整体

所以这里用find()而不用matches()

这些可以查看JDK的API文档
[/Quote]
这位兄台 说的浅显易懂 佩服!
tubage408 2010-12-14
  • 打赏
  • 举报
回复
1楼解释的那是相当清楚
eggno8 2010-12-14
  • 打赏
  • 举报
回复
match的正则是个is关系的,find是has关系的
安心逍遥 2010-12-14
  • 打赏
  • 举报
回复
呵呵,楼上几位说的都对....
茫茫大海 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxcnn 的回复:]
matches()是查看正则是否匹配源字符串的整体,相当于在正则的首尾分别加了“^”和“$”的限制

而你的例子,显然是匹配了其中的子串,而不是源字符串的整体

所以这里用find()而不用matches()

这些可以查看JDK的API文档
[/Quote]
学习了哈!长见识了啊!
若鱼1919 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxcnn 的回复:]
matches()是查看正则是否匹配源字符串的整体,相当于在正则的首尾分别加了“^”和“$”的限制

而你的例子,显然是匹配了其中的子串,而不是源字符串的整体

所以这里用find()而不用matches()

这些可以查看JDK的API文档
[/Quote]
原来还有这么个说法,长见识了!
Jlins 2010-12-13
  • 打赏
  • 举报
回复

matches()是查看正则是否匹配源字符串的整体,相当于在正则的首尾分别加了“^”和“$”的限制

而你的例子,显然是匹配了其中的子串,而不是源字符串的整体

所以这里用find()而不用matches()
-过客- 2010-12-13
  • 打赏
  • 举报
回复
matches()是查看正则是否匹配源字符串的整体,相当于在正则的首尾分别加了“^”和“$”的限制

而你的例子,显然是匹配了其中的子串,而不是源字符串的整体

所以这里用find()而不用matches()

这些可以查看JDK的API文档

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧