2012-07-30 70 views
0

我不是RegEx专家,只是在调试某些失败的jUnit代码。尝试在RegEx上匹配时发生异常

所以,如果我是正确的,这是什么,我们传递:

##ALT=<ID=DEL:ME:ALU,Description="Deletion of ALU element"> 

这就是代码的正则表达式会抛出异常的行,但没有,所以我正则表达式的深入了解想知道你是否看到这个表情出了什么问题?

pattern = Pattern.compile("((Description=\"[^\"]*\")>"); 

比你。

+0

你是什么意思的正则表达式会抛出异常? – bluesman 2012-07-30 20:28:07

回答

0

你可以尝试:

pattern = Pattern.compile("((Description=\"[^\"]*\")>)"); 

你的情况,你可以使用这样的事情的比赛对你的字符串:

Pattern pattern = Pattern.compile(".*(Description=\"[^\"]*\")>"); 
Matcher matcher = pattern.matcher("##ALT=<ID=DEL:ME:ALU,Description=\"Deletion of ALU element\">"); 
matcher.matches(); 
System.out.println(matcher.group(1)); 

这将打印出:Description="Deletion of ALU element"

+0

谢谢,请您多一点解释一下这个和那个老人之间有什么区别,那个人失踪了什么? – Bohn 2012-07-30 20:27:11

+1

第一个转义字符是用于Java的,第二个将逃避正则表达式的报价 – 2012-07-30 20:30:31

+0

看起来像那些'''是从字面上看在正则表达式中,这一个肯定是:'[^“]',并且应该'不要逃跑。 '''不是java正则表达式中的特殊字符,并且不需要在正则表达式的上下文中转义 – pb2q 2012-07-30 20:30:53

2

你的正则表达式打开2 (,并关闭1 )。这是不完整的。您必须在您的正则表达式中关闭组定义,否则可能会出现分析异常。

+0

谢谢,将修复看起来像弗朗西斯科建议吗? – Bohn 2012-07-30 20:29:29

+0

啊我看到了...所以我应该只添加另一个“)”旁边的“)”,我们已经有? – Bohn 2012-07-30 20:40:29