使用java正则表达式提取两个标记之间的数据,但不提取标记之间的数据
可能重复:使用java正则表达式提取两个标记之间的数据,但不提取标记之间的数据,java,regex,Java,Regex,可能重复: 例如:我需要亚伦、特布、阿巴查、瑞、阿巴希泽、哈利的数据。都在一条新的路线上 <a class="listing" href=http://eeee/a/hank_aaron/index.html">Aaron, Teb</a><br> <a class="listing" href=http://eeee/t/sani_abacha/index.html">Abacha, Jui</a><br>
例如:我需要亚伦、特布、阿巴查、瑞、阿巴希泽、哈利的数据。都在一条新的路线上
<a class="listing" href=http://eeee/a/hank_aaron/index.html">Aaron, Teb</a><br>
<a class="listing" href=http://eeee/t/sani_abacha/index.html">Abacha, Jui</a><br>
<a class="listing" href=http://eeee/i/aslan_abashidze/index.html">Abashidze, Harry</a><br>
我编写了以下代码,但它也提取了标记。我哪里做错了。如何替换标记,或者Regexp是否错误
public static void main(String[] args) throws Exception {
URL oracle = new URL("http://eeee/all/people/index.html");
BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream()));
String input;
String REGEX = "<a class=\"listing\"[^>]*>";
while ((input = in.readLine()) != null){
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(input);
while(m.find()) {
System.out.println(input);
}
}
in.close();
}
publicstaticvoidmain(字符串[]args)引发异常{
URL oracle=新URL(“http://eeee/all/people/index.html");
BufferedReader in=新的BufferedReader(新的InputStreamReader(oracle.openStream());
字符串输入;
字符串REGEX=“]*>”;
而((input=in.readLine())!=null){
Pattern p=Pattern.compile(REGEX);
匹配器m=p.Matcher(输入);
while(m.find()){
系统输出打印项次(输入);
}
}
in.close();
}
使用此正则表达式:
(?:<a class=\"listing\"[^>]*>)([^<]*)(?:<)
(?:]*>)([^这是以前的内容。@KerrekSB所说的。请学习缩进您的代码以便可读。:谢谢您的回答。它确实解决了我的问题。谢谢。
(?:<a class=\"listing\"[^>]*>)([^<]*)(?:<)