我想从字符串中提取数据。为此,我使用模式编译和匹配类。 但我很难为后续字符串开发正则表达式。
"<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等 那么我怎样才能构建正则表达式。 任何帮助将不胜感激。
答案 0 :(得分:0)
如果您尝试抓取引号内的所有内容,可以使用以下内容:"([^"]+)"
这个正则表达式虽然存在缺陷,但除非你更明确地指出你的需求,否则就必须这样做。
答案 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);
...
}
...