Java正则无法匹配问题.

_金角大王_ 发布于 2014/07/06 14:14
阅读 209
收藏 0
<img src="http://ww1.sinaimg.cn/thumbnail/85d2e097gw1e6yd9hnx1ag20g006tu1a.gif" />
<img src="http://ww1.sinaimg.cn/mw600/4ae4d75djw1e6yak0u4m7j20ku0rswhv.jpg" />


Pattern pattern = Pattern.compile("http.*.jpg");
Matcher matcher = pattern.matcher(imgStr);

// http.*.jpg 在正则测试工具中可以匹配, 为何在Java中使用就不行呢? 哪位高手解释一下, 3Q .




加载中
0
魔神翼
魔神翼

第二个能匹配到啊

http://ideone.com/Vj9Y1K

_金角大王_
_金角大王_
我一直在用 matches() 方法. 才知道还有find()... 感谢~
0
0x0001
0x0001
你这个是多行,可以加入一个选项,让正则支持多行匹配,代码如下:
Pattern pattern = Pattern.compile("(http.*.jpg)", Pattern.MULTILINE);


_金角大王_
_金角大王_
回复 @0x0001 : 受教了, 感谢~!
0x0001
0x0001
回复 @疯狂的舌头 : matchers是完整匹配,需要将整个字符串都匹配出来,下面的代码是可以的,?s 表示让点号匹配所有,包括换行符, m表示多行 Pattern.matches("(?sm).*http.*.jpg.*", imgStr);
_金角大王_
_金角大王_
多行后用matchers() 还是不行 - , -. 得用find()方法.
0
Chet_W
Chet_W
System.out.println(Pattern.matches("http.*.jpg","http://ww1.sinaimg.cn/mw600/4ae4d75djw1e6yak0u4m7j20ku0rswhv.jpg"));

可以识别啊

返回顶部
顶部