我在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/

10-12 01:38