-4

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

"<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 等。那么我该如何构建正则表达式。任何帮助,将不胜感激。

4

3 回答 3

0

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

虽然这个正则表达式有它的缺陷,但除非你更清楚地指定你的需求,否则这是必须的。

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

于 2013-10-12T11:33:36.213 回答
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));
}
于 2013-10-12T11:51:23.010 回答
0

是正则表达式:

^<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);
   ...
}
 ...
于 2013-10-12T12:44:24.393 回答