Использование групп захвата в регулярном выражении GWT - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть некоторый код с использованием Oracle regex, который я хочу перенести на GWT.

public static void main( String[] args )
{
    String expression = "(abc)|(def)";
    String source = "abcdef";

    Pattern pattern = Pattern.compile(expression);
    Matcher matcher = pattern.matcher(source);

    while (matcher.find())
    {
        if (matcher.start(1) != -1)
        {
            // it's an "abc" match
        }
        else if (matcher.start(2) != -1)
        {
            // it's a "def" match
        }
        else
        {
            // error
            continue;
        }

        int start = matcher.start();
        int end = matcher.end();

        String substring = source.substring(start, end);
        System.out.println(substring);
    }
}

Я пытался перенести его в библиотеку GWT regexp, но он использует группы захвата через начало (int)метод, который, по-видимому, не поддерживается в регулярных выражениях GWT.

Есть ли способ имитировать это поведение?

Ссылки на API:

Oracle regex

регулярное выражение GWT

1 Ответ

7 голосов
/ 16 февраля 2012

С GWT - 2,1 класса RegEx для анализа свободного текста :

Вот как вы можете перебирать их в GWT:

RegExp pattern = RegExp.compile(expression, "g");
for (MatchResult result = pattern.exec(source); result != null; result = pattern.exec(source)) 
{
    if (result.getGroup(1) != null && result.getGroup(1).length() > 0)
    {
        // it's an "abc" match
    }
    else if (result.getGroup(2) != null && result.getGroup(2).length() > 0)
    {
        // it's a "def" match
    }
    else
    {
        // should not happen
    }

    String substring = result.getGroup(0);
    System.out.println(substring);
}

(редактировать:добавлено "g" в Regexp.compile)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...