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

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

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

精慕HU 2022-08-03 15:12:33
我已经编写了正则表达式来匹配字符串中的内容,例如(?<=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 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

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-08-03
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您的正则表达式很好。仅当完整的字符串与模式 (docs) 匹配时,该方法才返回 true。您应该改用。这将找到与模式(文档)匹配的下一个子序列。Matcher.matches()Matcher.find()


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-08-03
  • 2 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号