龙空技术网

Linux-正则表达式

不寐旋律 99

前言:

眼前大家对“mysql正则表达式中文”大约比较关心,姐妹们都想要了解一些“mysql正则表达式中文”的相关知识。那么小编同时在网上搜集了一些有关“mysql正则表达式中文””的相关文章,希望朋友们能喜欢,朋友们快快来学习一下吧!

1 正则表达式

REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)

不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符

正则表达式被很多程序和开发语言所广泛支持:vim, less,grep,sed,awk, nginx,mysql 等

正则表达式分两类:

基本正则表达式:BRE扩展正则表达式:ERE

正则表达式引擎:

采用不同算法,检查处理正则表达式的软件模块,如:PCRE(Perl Compatible Regular

Expressions)

正则表达式的元字符分类:字符匹配、匹配次数、位置锚定、分组

1 基本正则表达式元字符

1.1 字符匹配

.:匹配任意单个字符,可以是一个汉字[]:匹配指定范围内的任意单个字符,示例:[0-9]   [a-z]   [a-zA-Z][^]:匹配指定范围外的任意单个字符,示例:[^zhang] [:alnum:]:字母和数字[:alpha:]:代表任何英文大小写字符,亦即 A-Z, a-z[:lower:]:小写字母,示例:[[:lower:]],相当于[a-z][:upper:]:大写字母[:blank:]:空白字符(空格和制表符)[:space:]:水平和垂直的空白字符(比[:blank:]包含的范围广)[:cntrl:]:不可打印的控制字符(退格、删除、警铃...)[:digit:]:十进制数字[:xdigit:]:十六进制数字[:graph:]:可打印的非空白字符[:print:]:可打印字符[:punct:]:标点符号

案例:

[root@nginx ~]# ls /etc/ | grep 'rc[.0-6]'rc0.drc1.drc2.drc3.drc4.drc5.drc6.drc.drc.local[root@nginx ~]# ls /etc/ | grep 'rc[.0-6].'rc0.drc1.drc2.drc3.drc4.drc5.drc6.drc.drc.local[root@nginx ~]# ls /etc/ | grep 'rc[.0-6]\.'rc0.drc1.drc2.drc3.drc4.drc5.drc6.d[root@nginx ~]#

1.2 匹配次数

用在要指定次数的字符后面,用于指定前面的字符要出现的次数

*:匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配.*:任意长度的任意字符\?:匹配其前面的字符0或1次,即:可有可无\+:匹配其前面的字符至少1次,即:肯定有,>=1\{n\}:匹配前面的字符n次\{m,n\}:匹配前面的字符至少m次,至多n次\{,n\}:匹配前面的字符至多n次,<=n\{n,\}:匹配前面的字符至少n次

案例:

[root@nginx ~]# echo /etc/ |grep "/etc/\?"/etc/[root@nginx ~]# echo /etc |grep "/etc/\?"/etc
[root@nginx ~]# cat test.txtgooglegooooooooooooooooooglegglegoglegooooOOOOO00000glegooogle[root@nginx ~]# grep 'go\{2,\}gle' test.txtgooglegooooooooooooooooooglegooogle[root@nginx ~]# grep 'goo\+gle' test.txtgooglegooooooooooooooooooglegooogle[root@nginx ~]# grep 'goo*gle' test.txtgooglegooooooooooooooooooglegoglegooogle[root@nginx ~]# grep 'gooo*gle' test.txtgooglegooooooooooooooooooglegooogle

案例: 匹配正负数

[root@nginx ~]# echo -1 -2 123 -123 234 |grep '\-\?[0-9]\+'-1 -2 123 -123 234[root@nginx ~]#[root@nginx ~]# echo -1 -2 123 -123 234 |grep -E '\-?[0-9]+'-1 -2 123 -123 234[root@nginx ~]#[root@nginx ~]# echo -1 -2 123 -123 234 |grep -E -- '-?[0-9]+'-1 -2 123 -123 234[root@nginx ~]#[root@nginx ~]# echo -1 -2 123 -123 234 |grep -E '(-)?[0-9]+'-1 -2 123 -123 234[root@nginx ~]#

1.3 位置锚定

位置锚定可以用于定位出现的位置

^ :用于模式的最左侧(行首)$ :行尾锚定,用于模式的最右侧(行尾)^PATTERN$ :用于模式匹配整行^$ :空行^[[:space:]]*$ :空白行\< 或 \b :词首锚定,用于单词模式的左侧\> 或 \b :词尾锚定,用于单词模式的右侧\<PATTERN\> :匹配整个单词#注意: 单词是由字母,数字,下划线组成

案例:

[root@nginx ~]# grep '^[^#]' /etc/fstab/dev/mapper/centos-root /                       xfs     defaults        0 0UUID=d0727353-4fcc-4e63-802d-86f45ff1d3ad /boot                   xfs     defaults        0 0/dev/mapper/centos-swap swap                    swap    defaults        0 0[root@nginx ~]#

案例:排除掉空行和#开头的行

[root@nginx ~]# grep -v '^$' /etc/profile|grep -v '^#'[root@nginx ~]# grep '^[^$#]' /etc/profile

1.4 分组其它

1.4.1 分组

分组:() 将多个字符捆绑在一起,当作一个整体处理,如:\(root\)+

后向引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ...

\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

案例:

\(string1\(string2\)\)\1 :string1\(string2\)\2 :string2

注意: ‘后向引用‘’引用前面的分组括号中的模式所匹配字符,而非模式本身

1.4.2 或者

或者:\|

案例:

a\|b :a或bC\|cat :C或cat\(C\|c\)at :Cat或cat

2 扩展正则表达式

2.1 字符匹配元字符

. :任意单个字符[zhang] :指定范围的字符[^zhang] :不在指定范围的字符[:alnum:] :字母和数字[:alpha:] :代表任何英文大小写字符,亦即 A-Z, a-z[:lower:] :小写字母,示例:[[:lower:]],相当于[a-z][:upper:] :大写字母[:blank:] :空白字符(空格和制表符)[:space:] :水平和垂直的空白字符(比[:blank:]包含的范围广)[:cntrl:] :不可打印的控制字符(退格、删除、警铃...)[:digit:] :十进制数字[:xdigit:] :十六进制数字[:graph:] :可打印的非空白字符[:print:] :可打印字符[:punct:] :标点符号

2.2 次数匹配

*  :匹配前面字符任意次?  :0或1次+ 1  :次或多次{n}  :匹配n次{m,n}  :至少m,至多n次

2.3 位置锚定

^ 行首$ 行尾\<, \b 语首\>, \b 语尾

2.4 分组其它

()  :分组后向引用  :\1, \2, ...|  :或者a|b  :a或bC|cat  :C或cat(C|c)at  :Cat或cat

这篇要记的东西又多了,内容头疼还重要,你可信。。。。

标签: #mysql正则表达式中文