Java基础 - Java中的正则表达式

  正则表达式是对字符串的强大的处理工具,可以对字符串进行查找、提取、分割、替换操作。所谓正则表达式,可以把他看成匹配字符串的模板。


一、正则表达式中允许使用的字符

字符 解释
x 任意合法字符x
\0xxx 8进制表示法表示的字符
\xhh 16进制表示法表示的字符
\uhhhh 16进制表示的Unicode字符
\t 制表符
\n 换行符
\r 回车符
\f 换页符
\a 报警符
\e Escape符
\cx x对应的控制符。如\cM匹配Ctrl-M。x值必须A-Z或者a-z

还有一些特殊的符号

字符 解释
$ 匹配一行的结尾
^ 匹配一行的开头
() 子表达式
[] 子表达式,匹配集合
{} 匹配前面子表达式的频度
* 指定前面表达式出现0次或者多次
+ 指定前面表达式出现1次或者多次
? 指定前面表达式出现0次或者多次
. 匹配除了\n以外的任何单字符
\ 转义用
| 指定两项之间的任何一项

以上这些就只可以直接出现在正则表达式中的字符。

例子:
"\u0041\\\\"  //用于匹配"A\\" 即 A\
"\\?\\["  //用于匹配"\?\[" 即 ?[

二、正则表达式中的通配符

  以上的例子都只是单个字符匹配,如果说要任意一个字母匹配都可以,那就不能用上面例子这种写法,通配符很好解决这个问题。
预定义字符(即“通配符”)

预定义字符 解释
. 匹配任意字符
\d 匹配0-9的任意数字
\D 匹配非数字
\s 匹配所有空白字符,包括空格、\t、\r、\n、\f等
\S 匹配所有非空白字符
\w 匹配所有的单词字符,包括0-9,26个字母,下划线(_)
\W 匹配所有非单词字符
例子:
"\\d\\d\\d-\\d\\d\\d-\\d\\d\\d\\d"  //匹配如 000-000-0000形式的电话号码

三、字符集合

  []就是做匹配集合,只要符合[]内的表达式,就可以被匹配。
表达式可用的符号

符号 解释
x 任意单词字符,如[abc],表示匹配a、b、c中任意一个
- 表示范围,如[a-c],表示a到c的任意一个,a、b、c
^ 表示非,如[^a-c],表示除a、b、c外的任意一个
&& 表达式1&&表达式2,表示表达式1与2的交集

四、子表达式

  ()表达式很有意思,用于匹配,如果表达式搭配其他符号意义就不一样了。

符号 解释
(XXX) 匹配XXX
(?:XXX) 这个表达式使用 | 来匹配,如“industr(?:y|ies)”就是一个匹配“industry”或者“industries”更简略的表达式
(?=XXX) 执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 XXX 的字符串的起始点的字符串。例如,’Windows (?=95|98|NT|2000)’ 匹配”Windows 2000”中的”Windows”,但不匹配”Windows 3.1”中的”Windows”
(?!XXX) 与(?=XXX)相反

五、频度

  频度使用的是{}

符号 解释
{n} 正好匹配n次
{n,} 最少匹配n次
{n,m} n <= m, 至少匹配n次,至多匹配m次
例子:
"fooooood"  //如果是split的话,结果就是 "f" "" "d"

猜你喜欢

转载自blog.csdn.net/myt0929/article/details/80194987