0

正規表現を使用して、アポストロフィの間にある文字列から部分文字列を取得しようとしています。文字列の形式: Duplicate entry 'bla@bla.bl' for key 'email'. 私が使用している正規表現: '([^']*).

コード:

Pattern pattern = Pattern.compile("'([^']*)");
Matcher matcher = pattern.matcher(duplicated);
Log.d(TAG, matcher.group()));

matcher.group()正規表現全体に一致する単一の文字列を返すについてもわかりません。私の場合、2 つの部分文字列を返す必要があります。

誰かがこの正規表現を修正して説明してもらえますか? 前もって感謝します

4

4 に答える 4

1

私は次のような解決策を発明します。

int second_index = 0;
String str = "Duplicate entry 'bla@bla.bl' for key 'email'";
while (true) {
    if (second_index == 0)
        first_index = str.indexOf("'", second_index);
    else
        first_index = str.indexOf("'", second_index + 1);

    if (first_index == -1)
        break;

    second_index = str.indexOf("'", first_index + 1);

    if (second_index == -1)
        break;

    String temp = str.substring(first_index + 1, second_index);

    Log.d("TAG",temp);
}

出力

06-25 17:25:17.689: bla@bla.bl
06-25 17:25:17.689: メール

于 2013-06-25T11:48:32.590 に答える