java - 在 Java 中对 (\d{4},\d{4}) 进行正则表达式

标签 java regex

我正在尝试读取文件并仅查找括号中的数值。所以这方面的一个例子是:

(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/

相关文章:

regex - Pig Hadoop 匹配默认值?

python - 正则表达式既向后看又向前看

java - Trie 树在 Android 中崩溃

android - 在 Kotlin 中循环字符串并用新行替换句号

java - 初始化一副牌时如何使用toString方法

java - 项目重建后 Hibernate H2 数据库锁定

java - 从正则表达式输出中删除空字符串

java - 正则表达式 匹配文档中两个字符串之间的所有字符

Java : Components position

java - maven surefire : how to print current test being run?