Java正则表达式学习
正则表达式基础
注意:java中正则表达式里"\“本身需要转义,因此要匹配”?“需要表达式”\\?“而不是”\?"
在其他语言中,\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。
在 Java 中,\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
捕获组
简介
-
捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建
-
例如,正则表达式 (dog) 创建了单一分组,组里包含"d",“o”,和"g"。
-
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:
- ((A)(B©))
-
(A)
-
(B©)
-
©
- ((A)|(B)|©)匹配A,B,C其中一个
命名捕获组
- 格式
1 | (?<name>.....) |
若Matcher对象匹配成功,使用Matcher对象的group(“name”)方法即可返回该捕获组内容
- 例子
1 | private String dataRe = "(?<date>(?<year>\\d{1,4})/(?<month>\\d{1,2})/(?<day>\\d{1,2}))"; |
数量匹配符匹配模式
- 贪婪模式(Greedy):遇到满足的一直匹配,直到无法匹配
- 勉强模式(Reluctant):以?结尾,匹配最少字符
String类里的正则表达式方法
regex库
Pattern 对象是正则表达式编译后在内存中的表示形式,因此,正则表达式字符串必须先被编译为Pattern 对象,然后再利用该Pattern 对象创建对应的 Matcher 对象。执行匹配所涉及的状态保留在 Matcher 对象中,多个 Matcher 对象可共享同一个Pattern 对象。
1 | //模式串 |
Matcher常用方法
Modifier and Type | Method and Description |
---|---|
int |
end() 返回最后一个字符匹配后的偏移量。 |
int |
end(int group) 返回在上次匹配操作期间由给定组捕获的子序列的最后一个字符之后的偏移量。 |
int |
end(String name) 返回给定捕获子序列的最后一个字符之后的偏移量 named-capturing group 以前的匹配操作期间。 |
boolean |
find() 尝试找到匹配模式的输入序列的下一个子序列。 |
boolean |
find(int start) 重新设置该匹配器,然后尝试从指定的索引开始找到匹配模式的输入序列的下一个子序列。 |
String |
group() 返回与上一个匹配匹配的输入子序列。 |
String |
group(int group) 返回在上一次匹配操作期间由给定组捕获的输入子序列。 |
String |
group(String name) 返回给定捕获的输入子序列 named-capturing group 以前的匹配操作期间。 |
int |
groupCount() 返回此匹配器模式中捕获组的数量。 |
boolean |
hitEnd() 如果在匹配器执行的最后一次匹配操作中输入的结尾被搜索引擎命中,则返回true。 |
boolean |
lookingAt() 尝试将输入序列从区域开头开始与模式相匹配。 |
boolean |
matches() 尝试将整个区域与模式进行匹配。 |
- 標題: Java正则表达式学习
- 作者: sdjasj
- 撰寫于: 2022-02-18 09:20:42
- 更新于: 2023-01-24 10:23:22
- 連結: https://redefine.ohevan.com/2022/02/18/Java正则表达式学习/
- 版權宣告: 本作品采用 CC BY-NC-SA 4.0 进行许可。
留言