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

我已经编写了正则表达式来匹配字符串中的内容,例如(?<=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


精慕HU
浏览 130回答 2
2回答

慕村225694

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();&nbsp;if(a){&nbsp; &nbsp; String out = m.group();&nbsp; &nbsp; System.out.println("Match : " + out);}

慕桂英3389331

您的正则表达式很好。仅当完整的字符串与模式 (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(); // falseboolean isThereMatch = m.find(); // trueSystem.out.println(isThereMatch + " " + stringMatches);System.out.println(m.group());打印:true falsevii
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java