Разбить строку на две части, разделенные двоеточием, с помощью регулярного выражения в Java и игнорировать двоеточия в тегах и кавычках - PullRequest
0 голосов
/ 02 ноября 2010

Я уже некоторое время пытаюсь понять Java RegEx, который бы разбил что-то вроде следующего на две части:
l&<6:98>9"hello:world"-45:&<78:89>"hedhed:hdeh"+56 после двоеточия «-45» его следует разбивать на две части, игнорируя все двоеточия внутри тегов и кавычек Ни одна из сторон не обязательно должна содержать какие-либо теги или кавычки.

Помощь будет принята с благодарностью:)

Ответы [ 2 ]

2 голосов
/ 02 ноября 2010

Это будет отправная точка для функции синтаксического анализа:

/** example: findCharIndex(subject, ':'); */
public static int findCharIndex(String subject, char findChar)
{
    boolean insideQuotes = false;
    boolean insideTags = false;
    for (int index = 0; index < subject.length(); index++)
    {
        char ch = subject.charAt(index);
        if (ch == '"')
            insideQuotes = !insideQuotes;
        else if (!insideQuotes)
        {
            if (ch == '<')
                insideTags = true;
            else if (insideTags && ch == '>')
                insideTags = false;
        }
        if (!insideQuotes && !insideTags && ch == findChar)
            return index;
    }
    return -1;
}
1 голос
/ 02 ноября 2010

Сравнение легче выполнить, чем разделять.

(?:[^"<:]|"[^"]*"|<[^>]*)*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...