如何在Java中找到第一个未转义的引号?

如何在Java中找到第一个未转义的引号?,java,regex,escaping,Java,Regex,Escaping,例如,我有以下字符串: String str = "te\\\"st\"" 我必须找到第一个未转义(不带\)的索引。 在本例中,右索引为9 是否有任何正则表达式或任何其他解决方案来解决此问题 我有以下代码 Pattern pattern = Pattern.compile(HERE A REGEX); Matcher matcher = pattern.matcher(json); if(matcher.find()) { System.out

例如,我有以下字符串:

    String str = "te\\\"st\""
我必须找到第一个未转义(不带\)的索引。 在本例中,右索引为9

是否有任何正则表达式或任何其他解决方案来解决此问题

我有以下代码

    Pattern pattern = Pattern.compile(HERE A REGEX);
    Matcher matcher = pattern.matcher(json);

    if(matcher.find()) {
        System.out.println(matcher.start());
    }

但是我不知道使用哪种regexp。

您可以尝试使用此regex来查找第一个未转义的引号

^[^"\\]*?(?:[\\]{2})*(")
,,其中我打算捕获第一个未替换的引用到
组1
\1
$1

要查找
quote
捕获的组1
)的
索引
,您需要检索该值

matcher.start(1)

你是想用
String str=“te\\\\”st\\”
?它是第7个字符,而不是第9个字符。请分享非工作代码以澄清你有什么问题。是的,对不起,我是说String str=“te\\\”st\\”。好的,那么你的方法有什么问题吗?请注意
Pattern=Pattern.compile(这里是REGEX)
不编译。您尝试的模式是什么?一旦您提出了问题,请更新该问题,它暂时脱离主题。