提取正则表达式java的一部分

时间:2014-05-24 10:16:22

标签: java string expression extract

我需要帮助才能知道如何通过引用在Java中提取正则表达式的一部分。 示例:我的文字如下:

“Jean Moulin - Porte d'Orléans - Paris 14e 让·穆林。公寓37平方米,于2013年重新装修。材料和优质服务。大客厅,厨房,独立的卧室区,更衣室,卫生间/水槽,大型淋浴,卫生间,水槽和洗衣机设备,大理石地板,双层玻璃窗声音。安静,实用,宽敞。一楼设有开放式视野,电梯,卫兵。家具设备新家电。 €310,000。

房间:2 卧室:1 面积:37平方米 “

我只想要带有“房间”标记的房间数量我该怎么办? 我知道的是:

Pattern p;
Matcher m;
p= Pattern.compile("Rooms: +[0-9]");

但我只想要数字,我想从结果中删除“Rooms:”。

第二个问题,如何以正则表达式取名城市,因为如果我有很多不同城市名称的文字:如巴黎,伦敦,里昂,罗马等......我怎么能做一个正则表达式来做到这一点?

2 个答案:

答案 0 :(得分:0)

  

我只想要号码,我想删除"房间:"从结果。

使用Matcher#group()获取括号内()所包含的匹配组,该组用于启用正则表达式短语分组。

如果找到,group(1)会返回(\\d+)

示例代码:

    Pattern pattern = Pattern.compile("Rooms:\\s+(\\d+)");
    Matcher matcher = pattern.matcher("Rooms: 2 Bedrooms: 1 Surface: 37 m² ");

    if (matcher.find()) {
        System.out.println(matcher.group(1)); // output 2 only
    }

请查看Java Regex Pattern,其中详细说明了所有模式。在Java Tutorials - Quantifiers

上查找示例代码

答案 1 :(得分:0)

使用带有后引用的replaceAll()将其解压缩到一行:

String rooms = input.replaceAll("(?is).*\\brooms\\s+(\\d+).*", "$1");
相关问题