我在Java中使用正则表达式从大学的房间列表中获取特定输出。
清单中的支出如下所示:
(A55:G260)实验室260
(A55:G292)Grupperom 292
(A55:G316)Grupperom 316
(A55:G366)Grupperom 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
关于如何解决这个问题的任何想法?
最佳答案
问题不在于您的正则表达式。您需要引用组(1
)以获得匹配结果。
while (matcher.find()) {
System.out.println(matcher.group(1));
}
但是,您可以考虑使用否定字符类。
pattern = Pattern.compile(":([^)]+)");
关于java - Java中的特殊字符后的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28455601/