Java学习之正则表达式
Posted 忘尘天外天
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习之正则表达式相关的知识,希望对你有一定的参考价值。
Java正则表达式字符串模式。
正则表达式可以用来搜索、编辑和处理文本。
正则表达式不尽限于一种语言,但在每一种语言中又细微的差别。
java.util.regex包中主要有这3个类:
- Pattern类:
pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态编译方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数。
- Matcher类:
Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。
- PatternSyntaxException:
PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
捕获组
捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
例如,正则表达式(dog) 创建了单一分组,组里包含"d","o",和"g"。
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:
- ((A)(B(C)))
- (A)
- (B(C))
- (C)
可以通过调用matcher对象的groupCount方法来查看表达式有多少个分组。groupCount方法返回一个int值,表示matcher对象当前有多个捕获组。
还有一个特殊的组(组0),它总是代表整个表达式。该组不包括在groupCount的返回值中。
正则表达式语法:用符号来描述书写规则: /中间写正则表达式/ |:代表或者 ():优先级
字符 | 说明 |
\\ |
将下一字符标记为特殊字符、文本、反向引用、八进制的转义符。例如“n”匹配“n”,“\\n”匹配换行符 “\\t”匹配制表符,“\\(”匹配“(” |
^ | 匹配开头;/^ve/ 匹配以ve开头的 |
$ | 匹陪结尾 ;/ve$/ 以ve结尾的 |
\\d | 任意一个数字 |
\\D | 非数字字符匹配。等效于 [^0-9]。 |
\\w | 任意一个数字或字母 |
\\s | 任意字符串 |
{n} | 把左边的表达式重复n遍 |
{m ,n} | 把左边的表达式重复至少m遍,至多n遍 |
{m,} | 把左边的表达式重复至少m遍,至多不限 |
+ | 左边的表达式,至少出现一次,至多不限,相当于{1,} |
* | 左边的表达式,至少出现0次,至多不限,相当于{0,} |
? | 左边的表达式,至少出现0次,至多1次,相当于{0,1} |
[a,b,c] | 只能取方括号中内容之一,[a-z]从a~z之间取任取一个字母,[1-9]从1~9数字中任取一个 |
. | 匹配除"\\r\\n"之外的任何单个字符 |
[^xyz] | 反向字符集。匹配未包含的任何字符 |
\\b | 匹配一个字边界,即字与空格间的位置。例如,"er\\b"匹配"never"中的"er",但不匹配"verb"中的"er" |
\\B | 非字边界匹配。"er\\B"匹配"verb"中的"er",但不匹配"never"中的"er"。 |
\\cx | 匹配 x 指示的控制字符。例如,\\cM 匹配 Control-M 或回车符。x 的值必须在 A-Z 或 a-z 之间。如果不是这样,则假定 c 就是"c"字符本身。 |
\\f | 换页符匹配。等效于 \\x0c 和 \\cL。 |
\\r | 匹配一个回车符。等效于 \\x0d 和 \\cM。 |
\\s | 匹配任何空白字符,包括空格、制表符、换页符等。与 [ \\f\\n\\r\\t\\v] 等效。 |
\\S | 匹配任何非空白字符。与 [^ \\f\\n\\r\\t\\v] 等效。 |
\\w | 匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。 |
\\W | 与任何非单词字符匹配。与"[^A-Za-z0-9_]"等效。 |
\\un | 匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符。例如,\\u00A9 匹配版权符号 (©)。 |
Matcher类的方法
索引方法
索引方法提供了有用的索引值,精确表明输入字符串中在哪能找到匹配:
序号 | 方法及说明 |
---|---|
1 | public int start() 返回以前匹配的初始索引。 |
2 | public int start(int group) 返回在以前的匹配操作期间,由给定组所捕获的子序列的初始索引 |
3 | public int end() 返回最后匹配字符之后的偏移量。 |
4 | public int end(int group) 返回在以前的匹配操作期间,由给定组所捕获子序列的最后字符之后的偏移量。 |
研究方法
研究方法用来检查输入字符串并返回一个布尔值,表示是否找到该模式:
序号 | 方法及说明 |
---|---|
1 | public boolean lookingAt() 尝试将从区域开头开始的输入序列与该模式匹配。 |
2 | public boolean find() 尝试查找与该模式匹配的输入序列的下一个子序列。 |
3 | public boolean find(int start) 重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。 |
4 | public boolean matches() 尝试将整个区域与模式匹配。 |
以上是关于Java学习之正则表达式的主要内容,如果未能解决你的问题,请参考以下文章