我第一次尝试在 Java 中使用正则表达式。 我想获取字符串的某些部分。该字符串有点复杂:
<description>
<a href='http://testlink.html' alt='some text'><img border='0'
src='http://s2.glbimg.com/zzag70iNYX-QK24sUp0YXQmmXhx7yb8j2Sq2YK7tvX3A6vCwEUOFnFTBONQFT-
ni/s.glbimg.com/es/ge/f/original/2012/04/25/image.jpg'
alt='some' title='text' /></a><br />some text; some text
</description>
我的需求是获取 href 和 alt 中的字符串。为此,我正在执行以下代码:
for(Element element : elements)
{
//Elements children = element.children();
Pattern pattern = Pattern.compile("a\\bhref=*(.html|.htm)>");
String[] data = pattern.split(element.text()); ...
}
等等。目前我正在尝试仅获取 href 但没有成功。返回始终是整个字符串。不正确吗?我已经添加了 html 扩展以保证没有任何反应。
最佳答案
public static void main(String[] args){
String sourcestring = "<description><a href='http://testlink.html' alt='some text'><img border='0' src='http://s2.glbimg.com/zzag70iNYX-QK24sUp0YXQmmXhx7yb8j2Sq2YK7tvX3A6vCwEUOFnFTBONQFT-
ni/s.glbimg.com/es/ge/f/original/2012/04/25/image.jpg'
alt='some' title='text' /></a><br />some text; some text</description>";
Pattern re = Pattern.compile("(?<=href='|alt=')[^']*|(?<=href=\"|alt=\")[^\"]*");
Matcher m = re.matcher(sourcestring);
int mIdx = 0;
while (m.find()){
for( int groupIdx = 0; groupIdx < m.groupCount()+1; groupIdx++ ){
System.out.println( "[" + mIdx + "][" + groupIdx + "] = " + m.group(groupIdx));
}
mIdx++;
}
}
关于java正则表达式获取字符串的某些部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872709/