java - Java 中特殊字符后的正则表达式

标签 java regex

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

相关文章:

c# - 修剪正则表达式中的空格

java - 基于逗号对字符串进行标记 - 正则表达式

php - 任何 preg_match 来检查 url 是否是 youtube/vimeo/dailymotion 视频链接?

html - 用 REGEX 替换 HTML 文本中的每个双引号

java - Log4j 打印扩展类名

Java,ThreadPoolExecutor,afterExecute,重新提交任务?

c# - 正则表达式仅限制大写

Java RTP/HTTP 流媒体

java - 生产者程序中的kafka网络处理器错误(ArrayIndexOutOfBoundsException : 18)

java - 在将对象插入数组列表之前,如何删除 java 中对象的重复属性