java - 如何找到与 java 中的输入匹配的正则表达式模式部分?

标签 java regex

我有模式“abc|de.|ghi”和“def”的输入。如何找到匹配“def”的模式部分?所以,在这个例子中,我想要的结果是“de.”。不是“def”,这是我使用组和开始/结束方法所能获得的全部。

在代码中:

Pattern p = Pattern.compile("abc|de.|ghi");
Matcher m = p.matcher("def");
if(matcher.find()) {
    // Here I want to get the String "de." somehow
}

最佳答案

有点绕,但是你可以用捕获组做你想做的事:

Pattern p = Pattern.compile("(abc)|(de.)|(ghi)");
Matcher m = p.matcher("def");
if(m.find()) {
    if (m.group(1) != null)
        System.out.println("Matched \"abc\"");
    if (m.group(2) != null)
        System.out.println("Matched \"de.\"");
    if (m.group(3) != null)
        System.out.println("Matched \"ghi\"");
}

关于java - 如何找到与 java 中的输入匹配的正则表达式模式部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17480546/

相关文章:

java - Hibernate中的查询异常

java - 逐行读取文件 - 到达最后一行后终止 while 循环

javascript - 检测字符串是否包含模式

php - 解析电子邮件表单 "To"字段的正则表达式

java - 为什么我无法使用 Jackson Java 库解包和序列化 Java 映射?

java - Mockito:Java - 未完成的 stub 检测

java - 在 Java 中显示数字的前 n 位

javascript - 用于电话号码验证的正则表达式,具有最小和最大长度检查

c# - 如何通过正则表达式验证mvc中的CNIC号

python - 如何用列表中的单词替换重复多次的单个单词?