java模式匹配
如果您使用的是Java,那么您很有可能以前已经看过它的模式匹配。 String#matches(String)
方法在内部使用Pattern
类型,该类型包含更复杂的功能:
通过编译正则表达式来创建Pattern
。 该模式与任何输入字符串匹配,并且可以选择找到捕获组,这些捕获组隔离了字符串数据的某些部分。
该API的用法如下:
Pattern pattern = Pattern.compile( "([\\^\\S]+) is powerful" ); Matcher matcher = pattern.matcher( "Java is powerful" ); System.out.println(matcher.find()); // true System.out.println(matcher.group()); // Java is powerful System.out.println(matcher.group( 1 )); // Java
find()
方法查找模式的下一个匹配项,在此示例中,该匹配项与整个输入字符串匹配。 group()
方法返回整个捕获组,即与整个模式匹配,或者在使用索引限定时返回单个捕获组。 捕获组索引从1
开始,而不是从0
。
还有一个matches()
方法,其工作方式略有不同:
Pattern pattern = Pattern.compile( "([\\^\\S]+) is powerful" ); Matcher matcher = pattern.matcher( "Our Java is powerful" ); System.out.println(matcher.matches()); // false System.out.println(matcher.find()); // true
matches()
尝试从头到尾将整个输入字符串与模式匹配,而find()
仅尝试在输入字符串中的某个位置查找模式。
另外,请注意:请仅对不重复重复的单个匹配调用使用快捷方式方法String#matches(String)
或Pattern#matches(String, CharSequence)
。 模式编译起来很繁琐,我们应该利用模式类型的不变性,并将其重用于多个匹配项。
帖子的内容已从我的通讯034中重新发布 。
翻译自: https://www.javacodegeeks.com/2019/12/matching-patterns-with-java.html
java模式匹配