0

因此,我试图通过匹配器对象从存储在我的在线数据库中的一个字符串中提取两个字符串。

每个字符串出现在 s:64: 之后并在引号中 示例 s:64:"stringhere"

我目前正试图让它们如此,但我尝试过的任何正则表达式都失败了,

 Pattern p = Pattern.compile("I don't know what to put as the regex");
Matcher m = p.matcher(data);

话虽如此,我所需要的只是将在匹配器中返回两个字符串的正则表达式,因此 m.group(1) 是我的第一个字符串,而 m.group(2) 是我的第二个字符串。

4

3 回答 3

1

试试这个正则表达式: -

s:64:\"(.*?)\"

代码:

Pattern pattern = Pattern.compile("s:64:\"(.*?)\"");
Matcher matcher = pattern.matcher(YourStringVar);
// Check all occurance
int count = 0;
while (matcher.find() && count++ < 2) {
    System.out.println("Group : " + matcher.group(1));
}

这里group(1)返回每个匹配项。

输出:

Group : First Match
Group : Second Match

参考现场演示

于 2012-07-21T21:02:13.187 回答
0
String data = "s:64:\"first string\" random stuff here s:64:\"second string\"";
Pattern p = Pattern.compile("s:64:\"([^\"]*)\".*s:64:\"([^\"]*)\"");
Matcher m = p.matcher(data);
if (m.find()) {
  System.out.println("First string: '" + m.group(1) + "'");
  System.out.println("Second string: '" + m.group(2) + "'");
}

印刷:

第一个字符串:'第一个字符串'
第二个字符串:'第二个字符串'

于 2012-07-21T20:57:04.897 回答
0

你需要的正则表达式应该是compile("s:64:\"(.*?)\".*s:64:\"(.*?)\"")

于 2012-07-21T20:57:10.560 回答