Java中的转义正则表达式字符串

Java中的转义正则表达式字符串,java,regex,Java,Regex,什么是转义此字符串0x\w+:0x\w+[^][]*\K\[(\-?\d+(\.\d+)?)\s*(\-?\d+(\.\d+)))\]以用作Java字符串变量的正确方法 IntelliJ自动将其转义到(粘贴时): 但是,这会导致编译器错误: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 18 \K不是有效的正则表达式。不确定你想与之匹配的是什么。如果你想要一个国会大厦

什么是转义此字符串
0x\w+:0x\w+[^][]*\K\[(\-?\d+(\.\d+)?)\s*(\-?\d+(\.\d+)))\]
以用作Java字符串变量的正确方法

IntelliJ自动将其转义到(粘贴时):

但是,这会导致编译器错误:

java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 18

\K
不是有效的正则表达式。不确定你想与之匹配的是什么。如果你想要一个国会大厦的K字,只要把
K

这是对我有用的:

\[\["0x\w+:0x\w+(.+?[\d+,\d+]]])
下面是完整的代码(有点长的解决方案):


那个
[]
看起来有点奇怪。我相当确信这是你的正则表达式中的一个错误(它也“接近索引18”),但我很好奇它是否真的在做什么。实际上,它是一个正则表达式,用于查看网站使用的味道。它是针对php的。不同的语言有不同风格的正则表达式。仅供参考,java不支持
\K
@xybrek您检查的是正则表达式的PHP风格。Java风格没有
\K
,它只有
\K
。实际上,这是更好的
\[\[“0x\w+:0x\w+(.+?[\d+,\d+])
\[\["0x\w+:0x\w+(.+?[\d+,\d+]]])
String arrayPatternString = "\\[\\[\"0x\\w+:0x\\w+(.+?[\\d+,\\d+]]])";
Pattern arrayPattern = Pattern.compile(arrayPatternString);
Matcher arrayMatcher = arrayPattern.matcher(responseBody);
while(arrayMatcher.find()) {
    String matched = arrayMatcher.group();
    String g = "(\\-?\\d+(\\.\\d+)?),\\s*(\\-?\\d+(\\.\\d+)?)";
    Pattern gPattern = Pattern.compile(g);
    Matcher gMatcher = gPattern.matcher(matched);
    while(gMatcher.find()) {
        String gMatched = gMatcher.group();
        String[] s = gMatched.split(",");
        Double lat = Double.valueOf(s[0]);
        Double lon = Double.valueOf(s[1]);
        System.out.println("Lat: " + lat);
        System.out.println("Lat: " + lon);
        map.put("latitude", lat);
        map.put("longitude", lon);
    }
}