有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java正则表达式find方法为匹配的罗马数字返回false

我试图在java中创建一个正则表达式模式来匹配具有特定属性的列表文本。例如:

(i) hello stackoverflow

(iv) hello user

列表可以匹配(i)i)。 我使用我对正则表达式的理解得出了一个模式,并在一个在线工具中测试了该版本,它返回了正确的结果。然而,当我在java中实现它时,模式匹配器为find方法返回false

这是psudo代码:'

String text = "(i) hello";
String romanNumeralsRegex = "^(\\(|\\[)?((v|x)?i[xv]|(xv|v|x)?i+|(xv|v|x))((\\)|\\]|\\.))";
Pattern pattern = Pattern.compile(romanNumeralsRegex );
Matcher matcher = pattern.matcher(text);
System.out.println(matcher.find());

媒人。find()方法返回false。根据我的理解,匹配器应该返回group(0)作为(i)。我不知道我哪里出错了。请求社区的帮助

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    在我看来,一切都是正确的,除了在调用Matcher#find之后需要调用Matcher#group

    if (matcher.find()) {
        System.out.println(matcher.group(0));
    }
    

    输出:

    (i)