使用 Java 测试正则表达式

2022-09-04 19:44:24

我正在学习正则表达式,并且我正在使用以下代码片段进行测试:

String regex = "";
String test = "";
Pattern.compile(regex).matcher(test).find();

但是当我尝试这样的一些时:

System.out.println(Pattern.compile("h{2,4}").matcher("hhhhh").find()); 

它返回 true 而不是 false,如预期的那样。

System.out.println(Pattern.compile("h{2}").matcher("hhh").find());

它返回 true 而不是 false,如预期的那样。

怎么了?也许这不是用于正确测试正则表达式的正确语句?

谢谢。


答案 1

该字符串包含两个 s,因此正则表达式匹配,因为该方法允许匹配子字符串。hhhhfind()

如果锚定正则表达式以强制其与整个字符串匹配,则正则表达式将失败:

^h{2}$

另一种可能性是使用以下方法:matches()

"hhh".matches("h{2}")

将失败。


答案 2

但这不会回来。true

System.out.println(Pattern.compile("^h{2,4}$").matcher("hhhhh").find()); 

^是行的开头

$是行的末尾