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條經驗 獲得超8個贊
你的正則表達式很好。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());
打?。?/p>
true false
vii
添加回答
舉報