我正在尝试在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)
返回。我不知道自己哪里出错了。请求社区帮助
提前致谢。
答案 0 :(得分:2)
除非您在致电Matcher#group
后拨打Matcher#find
,否则一切看起来都不正确:
if (matcher.find()) {
System.out.println(matcher.group(0));
}
输出:
(i)