为了账号安全,请及时绑定邮箱和手机立即绑定

重写正则表达式以在 Java 中使用

重写正则表达式以在 Java 中使用

沧海一幻觉 2022-07-27 16:49:02
我已经编写(?<=pp_).*(?=')了正则表达式来匹配pp_字符串中的内容,例如['newPage', 'pp_vii', -1]我的正则表达式在在线测试器中运行良好(请参阅在线正则表达式验证器),但在 Java 中却不行。我失败的代码:Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");String input = "['newPage', 'pp_vii', -1])";Matcher m = pattern.matcher(input);boolean match = m.matches(); // false
查看完整描述

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);

}


查看完整回答
反对 回复 2022-07-27
?
慕仙森

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


查看完整回答
反对 回复 2022-07-27
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信