Find the first occurrence with Regex and Java

前端 未结 3 899
不知归路
不知归路 2020-12-03 22:42

I would like to be able to find the first occurrence of m² and then numbers in front of it, could be integers or decimal numbers. E.g.

"som

3条回答
  •  北荒
    北荒 (楼主)
    2020-12-03 23:00

    To get the first match, you just need to use Matcher#find() inside an if block:

    String rx = "\\d+(?:,\\d+)?\\s*m\\u00B2";
    Pattern p = Pattern.compile(rx);
    Matcher matcher = p.matcher("E.g. : 4668,68 m² some text, some text 48 m²  etc");
    if (matcher.find()){
        System.out.println(matcher.group());
    }
    

    See IDEONE demo

    Note that you can get rid of the alternation group using an optional non-capturing group (?:..)?

    Pattern breakdown:

    • \d+ - 1+ digits
    • (?:,\d+)? - 0+ sequences of a comma followed with 1+ digits
    • \s* - 0+ whitespace symbols
    • m\u00B2 - m2.

提交回复
热议问题