2 回答
TA贡献1841条经验 获得超3个赞
该matches()方法检查完整的字符串匹配,而不是使用find()检查子序列匹配的方法。最后,您可以使用group()方法来获取匹配的子序列字符串。
public static void main(String[] args) {
Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");
String input = "['newPage', 'pp_vii', -1])";
Matcher m = pattern.matcher(input);
boolean a = m.find();
if(a){
String out = m.group();
System.out.println("Match : " + out);
}
TA贡献1827条经验 获得超7个赞
你的正则表达式很好。Matcher.matches()如果完整的 String 与模式 ( docs )匹配,则该方法仅返回 true。你应该Matcher.find()改用。这会找到与模式 ( docs ) 匹配的下一个子序列。
Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");
String input = "['newPage', 'pp_vii', -1])";
Matcher m = pattern.matcher(input);
boolean stringMatches = m.matches(); // false
boolean isThereMatch = m.find(); // true
System.out.println(isThereMatch + " " + stringMatches);
System.out.println(m.group());
打印:
true false
vii
添加回答
举报