我正在尝试读取文件并仅查找括号中的数值。所以这方面的一个例子是:
(0000,0002)
(0000,0003)
(0002,0005)
我已经创建了一个正则表达式,它将在 java 中搜索它,如下所示:
public String matchDICOMTags = "^[(][\\d{4},][\\d{4}][)]$";
public Pattern pattern = Pattern.compile(matchDICOMTags);
但是在我的方法中,当涉及到这行代码时:
Matcher m = pattern.matcher(dcmObj.toString());
它不会继续代码。我开始认为这是我的正则表达式的问题,但我不确定。谁能告诉我我的模式是否正确?
最佳答案
数字的\d{4} 模式不应在 [] 内,因为这会导致它们是文字字符匹配。我也相信 ^ 和 $ 标记不是必需的,有或没有它们都可以。此外,不需要位于 [] block 内。
将它们移到外面
"[(]\\d{4},\\d{4}[)]";
测试
String test = "other stuff (0000,0002) foo \n(0000,0003) bar \n(0002,0005)baz";
Pattern pattern = Pattern.compile("[(](\\d{4}),(\\d{4})[)]");
Matcher matcher = pattern.matcher(test);
while (matcher.find()) {
System.out.println(String.format("(%s,%s)", matcher.group(1), matcher.group(2)));
}
输出
(0000,0002)
(0000,0003)
(0002,0005)
关于java - 在 Java 中对 (\d{4},\d{4}) 进行正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28998164/