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

java数据抽取中的正则表达式,java,regex,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>"

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

"<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>"
“WebUrl”
现在从上面的链接我想要数据42013-10-05;22:44:18等。 那么如何构建正则表达式呢。
任何帮助都将不胜感激。

如果您试图获取引号中的所有内容,您可以使用以下内容:
“([^”]+)”

尽管这个正则表达式有它的缺陷,但是除非您更清楚地指定您的需求,否则就必须这样做


演示:

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

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));
}
Matcher m=Pattern.compile(“id=\”(.*)“time=\”(.*)“tick”).Matcher(myXmlString);
列表匹配项=新的ArrayList();
while(m.find()){
匹配。添加(m组(1));
匹配。添加(m组(2));
}
是正则表达式:

^<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);
   ...
}
 ...
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
...
字符串id;
串时间;
字符串时间戳;
字符串勾号;
字符串url;
...
String text=“WebUrl”;
字符串regex=“^”;
Matcher m=Pattern.compile(regex.Matcher)(文本);
如果(m.matches()){
id=m组(1);
时间=m组(2);
时间戳=m组(3);
tick=m组(4);
url=m.group(5);
...
}
...

你尝试了什么?似乎很简单,如果你甚至需要一个注册表项。为什么不为此使用XML解析器呢?好的。bt我不知道XML解析器。你能告诉我它是什么以及需要学习的最佳链接吗?用于此任务。好的,Rohit。我会尝试,如果我有任何疑问,会回来。谢谢。这并没有给我预期的结果。以前我有tried(.*),但这个也不起作用。还有其他正则表达式可以帮我吗?嗨。谢谢。它起作用了。