我写了(?<=pp_).*(?=')
正则表达式来匹配 pp_
之后的内容像
['newPage', 'pp_vii', -1]
我的正则表达式在在线测试器中运行良好(请参阅 online regex validator ),但在 Java 中则不行。我的失败代码:
Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");
String input = "['newPage', 'pp_vii', -1])";
Matcher m = pattern.matcher(input);
boolean match = m.matches(); // false
最佳答案
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);
}
关于java - 重写 RegEx 以在 Java 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55090401/