我的正则表达式 -?\\d{2}\\.有什么问题?\\d{6}



我正在尝试从url中提取长度和长度:

<>之前来源:…传感器= false&center = -15.842208999999999% 2 c - 48.023084变焦= 17大小= 256 x256&language = en&client = google-maps-frontend&signature = hbey3U4lycTNgX48asW8MODjJLM之前

我不擅长正则表达式,所以我使用了这个正则表达式测试器(http://regexpal.com/)并编码了这个正则表达式

-?d{2}。d{6}
(用于JAVA)

它产生这样的结果(谁说它是regexpal.com):

<>之前-15.842208……-48.023084之前

所以当我这样做的时候(在java中):

for (Element element : newsHeadlines) {
        if(element.toString().contains("https://maps.google.com")){
            List<String> lista = get_matches(element.attr("content"), "-?\d{2}\.?\d{6}");

        }
    }
public static List<String> get_matches(String s, String p) {
    // returns all matches of p in s for first group in regular expression 
    List<String> matches = new ArrayList<String>();
    Matcher m = Pattern.compile(p).matcher(s);
    while(m.find()) { 
        matches.add(m.group(1)); //<-- Exception m.group(1) not have any results.
    }
    return matches;
}

我的正则表达式有什么问题?

您的方法get_matches正在寻找m.group(1)组在正则表达式中用括号定义。所以你的正则表达式应该是这样的:

(-?\d{2}\.?\d{6})
<<p> 在线演示/strong>

只选择一个符号作为可选符号,无论是-还是.

-d{2}.?d{6}

等效java regex:

-\d{2}\.?\d{6}

-?d{2}.d{6}

等效java regex:

-?\d{2}\.\d{6}

演示

调用m.group(0)只打印匹配的字符串。如果你想调用m.group(1),那么你需要将模式括在括号内。

相关内容

  • 没有找到相关文章

最新更新