我测试了你的代码,结果是不正确的,第一个楼号缺少了21,第二个楼号缺少了24,第三个楼号和楼层名称没有匹配出来,请修正一下你的代码
时间: 2024-04-12 13:32:19 浏览: 102
非常抱歉给您带来了困扰,以下是修正后的代码:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String[] result = {
"Y20,21基础垫层",
"y23,24基础垫层B",
"Y22(BC段)基础承台连梁"
};
String pattern = "(\\w+)([\\d,]+)(.+)";
Pattern r = Pattern.compile(pattern);
for (String str : result) {
Matcher m = r.matcher(str);
if (m.find()) {
String buildingNumber = m.group(1) + m.group(2);
String floorName = m.group(3);
System.out.println("楼号:" + buildingNumber);
System.out.println("楼层名称:" + floorName);
}
}
}
}
```
在正则表达式的模式中,将 `([\\d,]+)` 移动到了 `(\\w+)` 的后面,这样可以确保楼号的数字和逗号都被正确匹配。然后,在获取楼号时,将 `m.group(1)` 和 `m.group(2)` 进行拼接。现在重新运行该代码,将会得到正确的输出:
```
楼号:Y20,21
楼层名称:基础垫层
楼号:y23,24
楼层名称:基础垫层B
楼号:Y22
楼层名称:(BC段)基础承台连梁
```
非常抱歉给您带来的不便,希望这次的修正能满足您的需求。如果还有其他问题,请随时提问。
阅读全文
相关推荐
















