Java regex find方法返回false以匹配罗马数字

时间:2018-04-18 16:03:08

标签: java regex pattern-matching

我正在尝试在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());

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

除非您在致电Matcher#group后拨打Matcher#find,否则一切看起来都不正确:

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

输出:

(i)
相关问题