我已经写了一篇匹配来自以下文字的匹配器。
<TD><P>xyz... </P><P>Oiuye </P><P>Oture, </P><P>Option</P></TD><TD><P> EUR 0.20 </P></TD><Span></Span>
<TD><P>Foriegn </P></TD><TD><P> EUR 0.30 </P></TD><Span></Span>
我想使用的模式是: -
Pattern p = Pattern.compile("\\</TD\\>\\<TD\\>\\<P\\>(.*?)\\</P\\>");Matcher m_Fee_1 = p_Fee_1.matcher(row_xml);
m_Fee_1.find();
String Contract_Fee_Temp = m_Fee_1.group(1).trim();
我需要筹集0.20欧元和0.30欧元。
我的控制台显示 0.20欧元 0.30欧元
并抛出一个错误,找不到匹配项。为什么会这样?如果我只是捕获该异常并获取数据,这没关系吗?或者我该如何处理?
答案 0 :(得分:3)
我认为你错误地使用了匹配器:
String[] str = new String[]{"<TD><P>xyz... </P><P>Oiuye </P><P>Oture, </P><P>Option</P></TD><TD><P> EUR 0.20 </P></TD><Span></Span> ", "<TD><P>Foriegn </P></TD><TD><P> EUR 0.30 </P></TD><Span></Span>"};
Pattern p = Pattern.compile("\\</TD\\>\\<TD\\>\\<P\\>(.*?)\\</P\\>");
for (String st : str) {
Matcher m = p.matcher(st);
while (m.find()) {
System.out.println(m.group(1));
}
}
收率:
EUR 0.20
EUR 0.30
答案 1 :(得分:1)
如果你已经得到了你所需要的东西,你就可以捕获异常。
try{
Pattern p = Pattern.compile("\\</TD\\>\\<TD\\>\\<P\\>(.*?)\\</P\\>");Matcher m_Fee_1 = p_Fee_1.matcher(row_xml);
m_Fee_1.find();
String Contract_Fee_Temp = m_Fee_1.group(1).trim();
//Print what ever you want
}
catch(IllegalStateException exception){}