我有一个包含一些文本和html的java字符串:
<title>test title</title>
blabla bla more text
我想要实现的目标是双重的:
1)检索<title></title>
的内容并将其保存在单独的字符串中。
2)删除原始字符串的那部分:<title>test title</title>
所以最终的结果就像是
originalString:
<title>test title</title>
blabla bla more text
newString:
blabla bla more text
pageTitle:test title
我怎样才能做到这一点?常用表达? 我无法抓住它......
答案 0 :(得分:1)
Don't use regular expressions to parse HTML!尝试使用符合您要求的JTidy或any of these开源HTML解析器。
使用这些库可以让您的生活更轻松,因为它们旨在解析HTML。您可以获取所需的节点并从中提取文本。
答案 1 :(得分:1)
这是使用正则表达式在标题标记之间提取文本的方法:
String s = "<title>test title</title>";
Pattern p = Pattern.compile("<title>(.*?)</title>");
Matcher m = p.matcher(s);
while(m.find()){
System.out.println(m.group(1));
}
答案 2 :(得分:0)
It is inadvisable to parse XML/HTML with regular expressions.但是,如果你绝对必须做你要求的这件事,试试这个:
package org.apache.people.mclark.examples.regex;
import java.util.regex.*;
public class Regex1 {
public static void main(String[] args) {
final String subjectString = "<title>test title</title>\n" +
"blabla bla more text";
Pattern regex = Pattern.compile("<title>(.*?)</title>(.*)",
Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
String pageTitle = regexMatcher.group(1);
String leftOvers = regexMatcher.group(2);
System.out.println("pageTitle[" + pageTitle + "]");
System.out.println("leftOvers[" + leftOvers + "]");
} else {
System.out.println("no match");
}
}
}
我洗手了任何不当行为!