java正则表达式的问题

J2EE 码拜 9年前 (2015-04-18) 769次浏览 0个评论
 

我的代码如下:
public static boolean RegExp(String regex, String matchstr) {
boolean ret = false;

try {
if ((regex==null)||(matchstr==null)) return ret;

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(matchstr);

ret = m.find();
} catch (Exception e) {
e.printStackTrace();

}

return ret;
}

public static void main(String[] args) {

String mstr = “<189>779852: Jul 30 11:41:26 CST: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet2/0/39, changed state to down”;
        String rstr = “%LINEPROTO-\d-UPDOWN:.*GigabitEthernet([0-9a-zA-Z/]+),.*down”;
        String ret = null;

        boolean find = false;

        find = RegExp(rstr,mstr);

System.out.println(“find  = “+find);
}
程序运行没有问题,返回为 true。但是我放在在线测试工具:http://tool.oschina.net/regex上测试,却没有匹配上。请高手指正。先谢了。

java正则表达式的问题
40分
“%LINEPROTO-\d-UPDOWN:.*GigabitEthernet([0-9a-zA-Z/]+),.*down”;
\d
java正则表达式的问题
to rui888 谢谢你的回复。

但如果改为\d,java编译就有问题,“Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  ”  \””  \ )”,而且在测试工具上,还是一样匹配不出来。

java正则表达式的问题
java编译 \ 这个需要转义的所以  \d

网页http://tool.oschina.net/regex  测试可以的 
 <189>779852: Jul 30 11:41:26 CST: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet2/0/39, changed state to down

%LINEPROTO-\d-UPDOWN:.*GigabitEthernet([0-9a-zA-Z/]+),.*down


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明java正则表达式的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!