我需要帮助才能知道如何通过引用在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:”。
第二个问题,如何以正则表达式取名城市,因为如果我有很多不同城市名称的文字:如巴黎,伦敦,里昂,罗马等......我怎么能做一个正则表达式来做到这一点?
答案 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");