我正在尝试获取某个标签内的文本。所以如果我有:
<a href="http://something.com">Found<a/>
我希望能够检索 Found
文本。
我正在尝试使用正则表达式来做到这一点。如果 <a href="http://something.com>
我能做到保持不变,但事实并非如此。
到目前为止我有这个:
Pattern titleFinder = Pattern.compile( ".*[a-zA-Z0-9 ]* ([a-zA-Z0-9 ]*)</a>.*" );
我认为最后两部分 - ([a-zA-Z0-9 ]*)</a>.*
- 没问题,但我不知道第一部分该做什么。
最佳答案
正如他们所说,不要使用正则表达式来解析 HTML。不过,如果您意识到这些缺点,您可能会侥幸逃脱。尝试
Pattern titleFinder = Pattern.compile("<a[^>]*>(.*?)</a>", Pattern.DOTALL | Pattern.CASE_INSENSITIVE);
Matcher regexMatcher = titleFinder.matcher(subjectString);
while (regexMatcher.find()) {
// matched text: regexMatcher.group(1)
}
将遍历字符串中的所有匹配项。
它不会处理嵌套 <a>
标记并忽略标记内的所有属性。
关于Java Regex 从 HTML anchor (<a>...</a>) 标签获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4628715/