使用正则表达式提取数据

时间:2014-08-20 16:52:20

标签: java regex

我正在尝试从旧网站中提取数据。我有一个带有城镇名称的下拉列表。我正在尝试使用正则表达式提取城镇名称并插入数据库。我试过>.*<,但没有匹配。我对正则表达式很新,所以我不知道发生了什么。 示例数据如下。我想在结束标记之前使用该名称。

"    <option value=""ABERCROMBIE"">ABERCROMBIE</option>"
"    <option value=""ABERDEEN"">ABERDEEN</option>"
"    <option value=""ABRAMS RIVER"">ABRAMS RIVER</option>"
"    <option value=""ACACIAVILLE"">ACACIAVILLE</option>"

2 个答案:

答案 0 :(得分:0)

你的正则表达式很好,但你必须确保它与非贪婪的运算符并使用捕获组。你可以使用这个正则表达式。

>(.*?)<

<强> Working demo

MATCH 1
1.  [35-46] `ABERCROMBIE`
MATCH 2
1.  [89-97] `ABERDEEN`
MATCH 3
1.  [144-156]   `ABRAMS RIVER`
MATCH 4
1.  [202-213]   `ACACIAVILLE`

您可以使用此代码:

String line = "<YOUR TEXT TO BE PARSED>";
Pattern pattern = Pattern.compile(">(.*?)<");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
    System.out.println("Town: " + matcher.group(1));
}

答案 1 :(得分:0)

只需使用Possessive Quantifiers

替换包含结束标记的<...>之间的所有内容

示例代码:

String str="<option value=\"\"ABERCROMBIE\"\">ABERCROMBIE</option>";
System.out.println(str.replaceAll("</?[^>]*+>", "")); // prints ABERCROMBIE

注意:如果需要,请致电trim()以删除领带和培训空间。

Online demo


<\/?[^>]*+>

Regular expression visualization

Debuggex Demo