我已经尝试找出一个 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/