0

そのため、オンラインデータベースに保存されている1つの文字列からマッチャーオブジェクトを介して2つの文字列を取得しようとしています。

各文字列はs:64:の後に表示され、引用符で囲まれています例s:64: "stringhere"

私は現在それらをそのように取得しようとしていますが、私が試した正規表現は失敗しました、

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

つまり、必要なのは、マッチャー内の2つの文字列を返す正規表現だけです。これにより、m.group(1)が最初の文字列になり、m.group(2)が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) + "'");
}

プリント:

最初の文字列:'最初の文字列'
2番目の文字列:'2番目の文字列'

于 2012-07-21T20:57:04.897 に答える
0

必要な正規表現はcompile("s:64:\"(.*?)\".*s:64:\"(.*?)\"")

于 2012-07-21T20:57:10.560 に答える