регулярное выражение - незаконное повторение? - PullRequest
8 голосов
/ 15 июля 2011

Работа с Regex в Java. Я продолжаю пытаться заставить это работать, но это бросает чертову ошибку каждый раз. Я убежден, что это связано с фигурными скобками.

String openbrace = Pattern.quote("{");
String closebrace = Pattern.quote("}");
Pattern pattern = Pattern.compile(openbrace+"[ ]?\"(.*?)\"[ ]?,[ ]?\"(.*?)\"[ ]?"+closebrace);

+

{ "Working", "Working" },

=

Illegal Repetition

РЕДАКТИРОВАТЬ: я использую NetBeans 7.0 с JDK 1.7

1 Ответ

5 голосов
/ 15 июля 2011

Как насчет "\\{\\s*\"(.*?)\"\\s*,\\s*\"(.*?)\"\\s*\\}"?

Только что скомпилировали и запустили следующую программу.Работает правильно:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class App
{
    public static void main(String[] args)
    {
        Pattern p = Pattern.compile("\\{\\s*\"(.*?)\"\\s*,\\s*\"(.*?)\"\\s*\\}");
        Matcher m = p.matcher("{ \"working\", \"working\"}");

        while(m.find())
        {
            System.out.println(m.start(1) + " - " + m.end(1));
            System.out.println(m.start(2) + " - " + m.end(2));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...