java 正则表达式问题?为什么总是false呢?

Patternp=null;//正则表达式Matcherm1=null;//操作的字符串p=Pattern.compile("^(WS[A-Z0-9]*)([(\r\n)... Pattern p = null; //正则表达式
Matcher m1 = null; //操作的字符串
p = Pattern.compile("^(WS[A-Z0-9]*)([(\r\n) ][A-Z0-9]+){3}[(\r\n) ](SIGMET).*",Pattern.DOTALL );
m1 = p.matcher("WS90\r\nLLOP KJK\r\nKTYU SIGMET hkjhk");
System.out.println( m1.matches());
展开
 我来答
1310002415
2013-06-09 · 超过22用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:33.2万
展开全部
问题在这 [(\r\n) ] ,你表达的意思应该是\r\n或者空格,但是[(\r\n) ]这样写是不对的,中括号中的小括号没有起到小括号的作用,改为(\r\n| )就可以了

Pattern p = null; //正则表达式
Matcher m1 = null; //操作的字符串
p = Pattern.compile("^(WS[A-Z0-9]*)((\r\n| )[A-Z0-9]+){3}(\r\n| )(SIGMET).*",Pattern.DOTALL );
m1 = p.matcher("WS90\r\nLLOP KJK\r\nKTYU SIGMET hkjhk");
System.out.println( m1.matches());
jonggers
2013-06-09 · TA获得超过846个赞
知道小有建树答主
回答量:497
采纳率:0%
帮助的人:548万
展开全部
首先你的{3}是对([(\r\n) ][A-Z0-9]+)取3次,明显你下面的字符串不匹配,当然是false了,还有,你写的正则是在字符串模式下,需要转义,如果你想要下面的字符串返回true,那应该这样写:
^WS[A-Z0-9]*(\\r\\n[A-Z0-9\s]+){1,}SIGMET.*
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式