简单模糊查询 hi
可以匹配hi,HI,Hi,hI这四种情况中的任意一种。包含hi这两个连续的字符,比如him,history,high等等
精确地查找hi这个单词
bhib
单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词
bhib.*bLucyb
解释: . 表示除了换行符以外的任意字符
* 表示内容可以是任意数量的(扩展+重复一次或更多次 ?重复零次或一次)
.*连在一起就意味着任意数量的不包含换行的字符
匹配以0开头,然后是两个数字,然后是一个连字号"-",最后是8个数字
方式一 0dd-dddddddd
解释:d匹配一个数字
方式二 0d{2}-d{8}
解释:{2}({8})的意思是前面d必须连续重复匹配的次数
扩展:{5,12}则是重复的次数不能少于5次,不能多于12次
{n,}重复n次或更多次
小结:
b . 等称为元字符,常用的元字符如下表
常用的元字符
| 代码 | 说明 |
|---|---|
| . | 匹配除换行符以外的任意字符 |
| w | 匹配字母或数字或下划线或汉字 W 用大写表示相反含义 匹配不是字母或数字或下划线或汉字 |
| s | 匹配任意的空白符 S 用大写表示相反含义 匹配不是空白符 |
| d | 匹配数字 D用大写表示相反含义 匹配任意非数字的字符 |
| b | 匹配单词的开始或结束 B用大写表示相反含义 匹配不是单词开头或结束的位置 |
| ^ | 匹配字符串的开始 类似 b的开始 |
| $ | 匹配字符串的结束 类似b的结束 |
注意:如果要查找元字符本身的话,如查找字符串中是否包含$ ,需要加转义,否则会被解释成匹配字符串的结束
如 b$.b 匹配的为$开头的字符串并以除换行符以外的任意字符结尾
其他需要转义的:
匹配双引号"用"
匹配单引号'用'
{2} {5,12}等称为限定符,指定可允许匹配的次数,常用的限定符如下表
常用的限定符
| 代码/语法 | 说明 |
|---|---|
| * | 重复零次或更多次 |
| + | 重复一次或更多次 |
| ? | 重复零次或一次 |
| {n} | 重复n次 |
| {n,} | 重复n次或更多次 |
| {n,m} | 重复n到m次 |
重叠限定符的含义
| 代码/语法 | 说明 |
|---|---|
| *? | 重复任意次,但尽可能少重复 |
| +? | 重复1次或更多次,但尽可能少重复 |
| ?? | 重复0次或1次,但尽可能少重复 |
| {n,m}? | 重复n到m次,但尽可能少重复 |
| {n,}? | 重复n次以上,但尽可能少重复 |
扩展:对一段整体加限定符,把整体括号起来即可,括号起来的内容叫分组
b(ds){10}000b 数字加空白字符,整体重复10次,最后拼000
匹配自定义字符[aeiou]
可以匹配aeiou中任何一个字符
其他[.?!] 匹配标点符号(.或?或!)。
扩展:[0-9] 匹配0到9中的一个数字,含意与d就是完全一致的
[a-z0-9A-Z_] 可以匹配a到z、0到9、A到Z
- 用^匹配相反含义:
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
或条件 |
d{5}-d{4}|d{5}
解释:从左到右,先判断d{5}-d{4} 是否满足,满足就不判断后面
在其他位置引用分组内容
b(w+)bs+1b
解释:对于分组(w+)被引用到1重复使用了,所以可以匹配到结果如 go go 或者kitty kitty等。
1代表从左到右的分组的顺序
扩展:可以自定义分组的名称
方式一:
?<Word> 定义分组名为Word k<Word> 引用分组Word
方式二:
?'Word' 定义分组名为Word k'Word' 引用分组Word
所以例子可以写成
b(?<Word>w+)bs+k<Word>b
排除分组内容在匹配
bw+(?=ingb)
解释:开头匹配为w+ 排除结尾并且是ing的
这种格式为(?=exp),对结尾内容生效
扩展一 :(?<=exp) ,对开头部分生效,如
(?<=bre)w+b 排除开头并且是re的,后面满足w+
一起使用如:
(?<=s)d+(?=s) 排除开头并且是空白字符的 ,中间多个数字,排除结尾并且是空白字符的
扩展二:(?!exp) , 排除任意位置值,并且不占用一个匹配
bwq(?!u)wb 排除q后为u的值,并且这个值也满足w
bw*q[^u]w*b 排除q后为u的值,但是这个值下一个值去匹配w ,用这种会占用一个匹配