java数据提取中的正则表达式

时间:2013-10-12 11:31:07

标签: java regex

我想从字符串中提取数据。为此,我使用模式编译和匹配类。 但我很难为后续字符串开发正则表达式。

"<WebApicall id="4" time="2013-10-05; 22:44:18" timeStamp="|18|44|22|5|9|113|6|277|0|" tick="11589293" file="self" bdlLine="61" type="url" url="http://www.google.com/"> WebUrl </WebApicall>"

现在从上面链接我想要数据4,2013-10-05; 22:44:18等 那么我怎样才能构建正则表达式。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

如果您尝试抓取引号内的所有内容,可以使用以下内容:"([^"]+)"

这个正则表达式虽然存在缺陷,但除非你更明确地指出你的需求,否则就必须这样做。

演示:http://regex101.com/r/qJ6jY8

答案 1 :(得分:0)

你应该使用jsoup来解析html / xml。它允许您使用选择器,以便您可以准确地获取所需的内容。如果你必须使用正则表达式然后使用 Matcher

Matcher m = Pattern.compile("id=\"(.*)\" time=\"(.*) \"tick" ).matcher(myXmlString);

List<String> matches = new ArrayList<String>();
while (m.find()) {
    matches.add(m.group(1));
    matches.add(m.group(2));
}

答案 2 :(得分:0)

Here是正则表达式:

^<WebApicall\s+id=\"(\d+)\"\s+time=\"(.*)\"\s+timeStamp=\"(\|?\d+\|)+\"\s+tick=\"(\d+)\".*url=\"(.*)\">

这里有一个java片段,展示了如何使用它:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

 ...

String id;
String time;
String timeStamp;
String tick;
String url;

 ...

String textual = "<WebApicall id="4" time="2013-10-05; 22:44:18" timeStamp="|18|44|22|5|9|113|6|277|0|" tick="11589293" file="self" bdlLine="61" type="url" url="http://www.google.com/"> WebUrl </WebApicall>";
String regex = "^<WebApicall\\s+id=\\\"(\\d+)\\\"\\s+time=\\\"(.*)\\\"\\s+timeStamp=\\\"(\\|?\\d+\\|)+\\\"\\s+tick=\\\"(\\d+)\\\".*url=\\\"(.*)\\\">";
Matcher m = Pattern.compile(regex).matcher(textual);
if (m.matches()) {
  id = m.group(1);
  time = m.group(2);
  timeStamp = m.group(3);
  tick = m.group(4);
  url = m.group(5);
   ...
}
 ...