正则表达式的合法字符

正则表达式的所支持的合法字符

字符解释
x字符x可以代表任何字符
\0mnn八进制数 0mnn所表示的字符
\xhh十六进制0xhh所表示的字符
\uhhhh十六进制值0xhhhh所表示的 UNICODE字符
\t制表符("\u0009")
\n换行符(“\u000A”)
\r回车符(“\000D”)
\f换页符(“\u000C”)
\a报警(bell)符(“\u0007”)
\eEscape符(“\u001B”)
\cxx对应的控制符。例如,\cM 匹配 Ctrl-M. x值必须为AZ或az之间

正则表达式中的特殊字符

特殊字符说明
$匹配一行的结尾。要匹配$字符本身,请使用\$
^匹配一行的开头。要匹配^字符本身,请使用\^
()标记子表达式的开始和结束位置。要匹配这些字符请使用\(和\)
[]用于确定中括号表达式的开始和结束位置。要匹配这些字符,请使用\[和\]
{}用于标记前面子表达式出现的频度。要匹配这些字符,请使用\{和\}
*指定前面子表达式可以出现零次或多次。要匹配*字符本身,请使用\*
+指定前面子表达式可以出现一次或多次。要使用+字符,请使用\+
?指定前面子表达式出现零次或一次。要匹配?字符本身,请使用\?
.匹配除换行符 \n 之外的任何单字符。要匹配. ,请使用\.
\用于转义下一个字符,或指定八进制、十六进制字符。要匹配 .字符,请使用\\
|指定两项之间任选一项。要匹配|字符本身,请使用\|

通配符是可以匹配多个字符的特殊字符。正则表达式中的“通配符”被称为预定义符

预定义符说明
.可以匹配任意字符
\d匹配0-9所有字符
\D匹配非数字
\s匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符
\S匹配所有非空白字符
\w匹配所有单词字符,包括0-9所有数字、26个英文字母和_
\W匹配所有非单词字符

关于记忆:d是digit的意思 ,代表数字;s是space的意思,代表空白;w是word的意思,代表单词。大写则代表匹配与之相反的字符。

在一些特殊情况,例如,只想匹配a~f的字符,或者匹配处理ab之外的所有小写字符,或者匹配中文字符,上面这些预定义字符就无能为力了,此时就用到了方括号表达式。

方括号表达式说明
表示枚举例如[abc],表示a、b、c其中任何一点字符:[gz],表示g、z其中任意一个字符
表示范围:-例如[a-f],表示a~f范围内的任意字符:[\\u0041-\\u0056]范围内的字符。范围可以和枚举结合使用,如[a-cx-z],表示a~c、x~z范围内的任意字符
表示求否^例如[^abc],表示非a、b、c的任意字符;[^a-f]表示不是a~f的任意字符
表示与运算 &&例如:[a-z&&[def]]表示a~z与[def]之间的交集,即d、e或f
表示并运算并运算与前面的枚举类似。如[a-d[m-p]],表示[a-dm-p]

正则表达式还支持圆括号表达式,用于将多个表达式组成一个子表达式,圆括号中可以使用或运算符。例如:(public|protected|private)用于匹配java中的三个访问控制运算符。
还支持边界匹配符

边界匹配符说明
^行的开头
$行的结尾
\b单词的边界
\B非单词的边界
\A输入的开头
\G前一个匹配的结尾
\Z输入的结尾,仅用于最后的结束符
\z输入的结尾

正则表达式还提供了数量表示符,如下:

贪婪模式勉强模式占有模式说明
X?X??X?+X表达式出现一次或零次
X*X*?X*+X表达式出现零次或多次
X+X+?X++X出现一次或多次
X{n}X{n}?X{n}+X表达式出现n次
X{n,}X{n,}?X{n,}+X最少出现n次
X{n,m}X{n,m}?X{n,m}+X表达式最少出现n次,最多出现m次

关于三种模式:
Greedy(贪婪模式):数量表示符,默认采用贪婪模式,除非另有表示。贪婪模式的表达式会一直匹配下去,直到无法匹配为止。
Reluctant(勉强模式):问号后缀(?)表示,它只会匹配最少的字符。也称为最小匹配模式。
Possessive(占有模式):用加号后缀(+)表示,目前只有Java支持占有模式,通常比较少用

																	——《疯狂Java》
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值