如何在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)
不编译。您尝试的模式是什么?一旦您提出了问题,请更新该问题,它暂时脱离主题。