将字符串拆分为两个用冒号在Java中用正则表达式分隔,并忽略标记和引号中的冒号

时间:2010-11-02 15:37:37

标签: java regex string split

我一直试图找出Java RegEx一段时间,现在将以下内容分成两部分:
l&<6:98>9"hello:world"-45:&<78:89>"hedhed:hdeh"+56 它应该在“-45”之后在冒号处拆分,忽略标签和引号内的所有冒号。双方都不一定要包含任何标签或引号。

非常感谢帮助:)

2 个答案:

答案 0 :(得分:2)

这将是解析函数的起点:

/** 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 :(得分:1)

执行匹配而不是拆分更容易。

(?:[^"<:]|"[^"]*"|<[^>]*)*