我將如何「找到」和「得到」兩個字符串之間的值?如何找到兩個字符串之間的值?
即:<a>3</a>
我讀文件找到<a>
,位置是從哪裏開始,那麼它就會停止閱讀時,發現</a>
我想返回的值是「3」。
使用JRE 6
我將如何「找到」和「得到」兩個字符串之間的值?如何找到兩個字符串之間的值?
即:<a>3</a>
我讀文件找到<a>
,位置是從哪裏開始,那麼它就會停止閱讀時,發現</a>
我想返回的值是「3」。
使用JRE 6
你的兩個主要的選項是:
1)優選的但潛在的複雜:使用XML/HTML解析器和得到的第一個 「a」 元素中的文本。例如使用Jsoup(感謝@ alpha123):
Jsoup.parse("<a>3</a>").select("a").first().text(); // => "3"
2)容易,但也不是很可靠的:使用正則表達式來提取<a>
和</a>
字符串之間的字符。例如: -
String s = "<a>3</a>";
Pattern p = Pattern.compile("<a>(.*?)</a>")
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println(m.group(1)); // => "3"
}
您可以使用正則表達式:
try {
Pattern regex = Pattern.compile("<a>(.*)</a>");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
for (int i = 1; i <= regexMatcher.groupCount(); i++) {
// matched text: regexMatcher.group(i)
// match start: regexMatcher.start(i)
// match end: regexMatcher.end(i)
}
}
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}
但是,如果你輸入HTML,你真的應該考慮使用HTML解析器。
...你爲什麼把這個包裝在try塊中? –
代碼由[RegexBuddy](http://www.regexbuddy.com/)生成,但如果沒有語法錯誤(例如在這種情況下),則沒有必要。 –
正則表達式將起作用,FSVO「工作」。但是,HTML/XML解析(相關但不同)應該使用適當的工具(希望支持強大的選擇器語言)來完成。 – 2011-08-20 02:03:22
[搜索標籤,然後將標籤之間的文本保存爲變量]的確切副本(http://stackoverflow.com/questions/7093716/searching-for-a-tag-then-saving-text-between-tag-作爲一個變量) –