簡體   English   中英

Java中的轉義正則表達式字符串

[英]Escape regex String in Java

逃脫此字符串的正確方法是什么0x\\w+:0x\\w+[^][]*\\K\\[(\\-?\\d+(\\.\\d+)?),\\s*(\\-?\\d+(\\.\\d+)?)\\]用作Java String變量。

IntelliJ會將其自動轉義為(粘貼時):

String pattern = "0x\\w+:0x\\w+[^][]*\\K\\[(\\-?\\d+(\\.\\d+)?),\\s*(\\-?\\d+(\\.\\d+)?)\\]";

但是,這導致編譯器錯誤:

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

\\K無效的正則表達式。 不知道您要嘗試匹配什么。 如果要使用大寫字母K,只需輸入K

這對我有用:

\[\["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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM