我正在 java 中使用正则表达式从我的大学的房间列表中获取特定的输出。
列表中的摘录如下所示:
- (A55:G260) 实验室 260
- (A55:G292)Grupperom 292
- (A55:G316)Grupperom 316
- (A55:G366) 组 366
- (HDS:FLØYEN)Fløyen(附录)
- (ODO:PC-STUE) Pulpakammeret (PC-stue)
- (SALEM:KONF)Konferanserom
我想获取冒号和括号之间的值。
我目前使用的正则表达式是:
pattern = Pattern.compile("[:]([A-Za-z0-9ÆØÅæøå-]+)");
matcher = pattern.matcher(room.text());
我把 ÆØÅ 包括在内,因为有些房间里有挪威字母。
不幸的是,正则表达式在输出中还包含构建代码(例如“A55”)...结果如下:
A55
A55
A55
:G260
:G292
:G316
关于如何解决这个问题有什么想法吗?
最佳答案
问题不在于你的正则表达式。您需要引用group(1
)来获取匹配结果。
while (matcher.find()) {
System.out.println(matcher.group(1));
}
但是,您可以考虑使用否定字符类。
pattern = Pattern.compile(":([^)]+)");
关于java - Java 中特殊字符后的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28455601/