2011-08-17 55 views
3

我对Java很新,但是如何去搜索标签文件,然后标签之间的所有东西,比如一串文本,都会被分配给一个变量。搜索标签,然后将标签之间的文本保存为变量

例如,我会有<title>THE TITLE</title>,但后来我想将字符串“THE TITLE”保存到名为title1的变量中,或者其他东西。

我应该如何去这样做呢?谢谢。

+0

我编辑了你的问题,这是你的意思? – amit

+0

是的,先生,谢谢! – Ben

回答

5

如果使用正则表达式,那么你只需要使用一个捕获组

Pattern p = Pattern.compile("<title>([^<]*)</title>", Pattern.CASE_INSENSITIVE); 
Matcher m = p.matcher(theText); 
if (m.find()) { 
    String thisIsTheTextYouWant = m.group(1); 
    .... 
+0

完美!非常感谢! – Ben

2

你不应该使用正则表达式来解析HTML:RegEx match open tags except XHTML self-contained tags

尝试jsoup http://jsoup.org/cookbook/extracting-data/attributes-text-html

String html = "<title>THE TITLE</title>"; 
Document doc = Jsoup.parse(html); 
Element title = doc.select("title").first(); 
String result = title.text(); 
+0

请注意,他没有解析整个文档;他抓住了特定元素的文本。如果他使用正则表达式来标记网页,那么使用正则表达式会更有效率。如果他正在编写Web浏览器,那么是的,他需要一个解析器。但是当人们不需要的时候,人们就会过快地引入这样的依赖关系。 –

+0

@ Ernest,我同意部分:在特殊情况下使用正则表达式会更有效。例如。如果OP想要在特定时间处理来自特定源的HTML文件。但是,如果OP将处理来自所有不同来源或更长时间的HTML文件,那么正则表达式解决方案迟早会失败 - 这里有太多的滚动条。这不仅仅是我的选择,这是我的经历,我做了很多的屏幕扫描。你想要快速和肮脏的东西?去正则表达式。想要一些健壮和持久的东西?去寻找一个HTML解析器。 – bpgergo

+0

全部都是如此。很公平。 –