正则表达式在Java中的使用 £神魔★判官ぃ 2024-04-07 12:02 29阅读 0赞 正则表达式在Java中的使用不仅限于String类中的match()方法!!! ### 正则中的^与$ ### 首先我们来了解这两个符号在正则表达式中的作用: ^ 符号放在表达式头部表示开始匹配 $符号放在尾部表示结束匹配 如果同时携带^与$符,表示整体匹配,$后面如果再携带其他东西,是会匹配失败的 ![3585b9724c78c472ecd44c20215cad4e.png][] 整体匹配失败 ![f31e74368e102cea738c7e10d8fa5329.png][] 如果不携带$则表示部分部分匹配,如图: ![3ce166f216d02b5536cb69769afb7919.png][] 结论:以$结尾的正则只能匹配一个字符串,反之可以匹配多个字符串。 ### String的matches方法与上文的异同 ### 来看这几组匹配结果: String regular = "^/(?<org>[^/]+)/(?<app>[^/]+)/pattern$"; String example = "/org/app/pattern"; System.out.println(example.matches(regular));//true String regular = "^/(?<org>[^/]+)/(?<app>[^/]+)/pattern$"; String example = "/org/app/pattern123"; System.out.println(example.matches(regular));//false String regular = "^/(?<org>[^/]+)/(?<app>[^/]+)/pattern"; String example = "/org/app/pattern123"; System.out.println(example.matches(regular));//false 与上文中正则匹配的异同就在于,当没有$结尾的时候,正常的正则匹配显示的是部分匹配。而Spring中的match方法给出的匹配结果是false。所以如果遇到这种场景,使用String的match方法很有可能出问题 ### Java中的Pattern ### 使用Pattern编译正则表达式之后再进行match就可以规避String中match方法出现的问题,直接看代码 String regular = "^/(?<org>[^/]+)/(?<app>[^/]+)/pattern"; String example = "/org/app/pattern123"; System.out.println(example.matches(regular));//false Pattern compile = Pattern.compile(regular); Matcher matcher = compile.matcher(example); boolean isMatch = matcher.find(); System.out.println(isMatch);//true #### 使用group方法来提取匹配结果 #### String regular = "^/(?<org>[^/]+)/(?<app>[^/]+)/pattern"; String example = "/org/app/pattern123"; System.out.println(example.matches(regular));//false Pattern compile = Pattern.compile(regular); Matcher matcher = compile.matcher(example); boolean isMatch = matcher.find(); System.out.println(isMatch);//true System.out.println(matcher.group(0));// /org/app/pattern System.out.println(matcher.group(1));//org System.out.println(matcher.group(2));//app System.out.println(matcher.group("app"));//app System.out.println(matcher.group("org"));//org [3585b9724c78c472ecd44c20215cad4e.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/07/a00ea81d7b6f440f8c69c8f8c4c970b8.png [f31e74368e102cea738c7e10d8fa5329.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/07/d632af28ba8a49ccbb8ccd3fc0d9867f.png [3ce166f216d02b5536cb69769afb7919.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/07/4a9c5fe4ebc54b7ba8f232a704fe363f.png
相关 如何在Java中使用正则表达式进行匹配 在Java中,你可以使用`java.util.regex.Pattern`和`java.util.regex.Matcher`类来实现正则表达式的匹配。 以下是一个简单的例子 向右看齐/ 2024年09月16日 15:33/ 0 赞/ 5 阅读
相关 如何在Java中使用正则表达式?示例 在Java中,我们可以使用java.util.regex包中的类来处理正则表达式。以下是一个基本的示例: 1. 导入所需的类: ```java import java.ut 待我称王封你为后i/ 2024年09月10日 21:21/ 0 赞/ 7 阅读
相关 在Java中如何优雅使用正则表达式? Pattern类是正则表达式的编译表示,它的实例是不可变的,可以安全地被多个并发线程使用。Matcher类则是对输入字符串进行解释和匹配操作的引擎。与Pattern类不同... 今天药忘吃喽~/ 2024年05月01日 05:21/ 0 赞/ 24 阅读
相关 正则表达式在Java中的使用 正则表达式在Java中的使用不仅限于String类中的match()方法!!! 正则中的^与$ 首先我们来了解这两个符号在正则表达式中的作用: ^ 符号放在表达式头部 £神魔★判官ぃ/ 2024年04月07日 12:02/ 0 赞/ 30 阅读
相关 在Go中使用正则表达式 > 本文将带大家了解一下在Go中如何使用正则表达式 一、演示案例 在这个案例中声明了常量text 然后使用了regexp这个包的regexp.Compile这个方法。 阳光穿透心脏的1/2处/ 2022年12月25日 09:55/ 0 赞/ 152 阅读
相关 正则表达式在java中的应用 本文介绍正则表达式在java中的一些应用: > 1)判断字符串中是否含有指定子字符串 > 2)捕获字符串中匹配的子字符串 > 3)替换字符串中指定的子字符串 > 小灰灰/ 2022年09月04日 00:44/ 0 赞/ 114 阅读
相关 java中的正则表达式使用详解 正则表达式的概念: 正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换 朱雀/ 2022年04月03日 02:48/ 0 赞/ 245 阅读
相关 正则表达式在Java中应用 目录: (一)完全匹配 (二)查找与该模式匹配的下一个子序列,并输出内容 (三)分组查询 (四)替换 (五)分割 (一)完全匹配 蔚落/ 2022年01月29日 19:25/ 0 赞/ 174 阅读
相关 “And” 在正则表达式中 `&&` 尝试使用正则表达式构建逻辑“与”运算时,我们有几种方法可以遵循。 第一种方法似乎很明显,但是如果考虑一下,默认情况下正则表达式是逻辑“和”的。 正则表达式中的每个顺序字符都一起 偏执的太偏执、/ 2021年07月04日 14:58/ 0 赞/ 275 阅读
还没有评论,来说两句吧...