java - 使用Java中的正则表达式将字符串拆分为两个以冒号分隔的字符串,并忽略标签和引号内的冒号

标签 java regex string split

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

非常感谢您的帮助:)

最佳答案

这将是解析函数的起点:

/** 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;
}

关于java - 使用Java中的正则表达式将字符串拆分为两个以冒号分隔的字符串,并忽略标签和引号内的冒号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4079297/

相关文章:

java - 在 Grails 中使用正则表达式进行密码验证

Python条件连接不以标点符号结尾的*连续*字符串

c - C中Sprintf函数的使用

c - 如何在C中复制数组的数组? (字符串数组到另一个字符串数组)

java - 文件权限问题

python - 使用 Python 查找文件大小的字符串中数组字符串的频率

java - 为什么 CompletableFuture 中的断点也会停止主线程中的执行?

java - 如何将字符串中的特殊字符转换为unicode?

java - 我们需要在更改属性文件后部署 war 吗

java - 将颜色 RGB 转换为 HEX(整数结果)