pgsql筛选中⽂字符正则_⼗分钟学会正则表达式
正则表达式⽤处挺⼴的,主要⽤于处理字符串。
正则引擎
想要在计算机语⾔中使⽤正则表达式,那么这门计算机语⾔必须要利⽤正则引擎去实现相应的正则库。主要的正则引擎分为以下两类:DFA 确定性的状态机。不使⽤”回溯”,效率⾼,但是⽀持的正则表达式语法有限。
NFA ⾮确定性状态机。构造简单,使⽤”回溯算法”,⽀持⼤多数的正则语法,是⽬前使⽤最⼴泛的正则引擎,⼤多数计算机语⾔例如Java、PHP、Ruby、Python等都是使⽤的NFA正则引擎。
语⾔实现
不同的语⾔对正则的实现不同,暴露出来的⽅法也不同,但⽅法的作⽤其实都是⼤同⼩异,这⾥⽤PHP语⾔做例⼦。
匹配字符串
preg_match(string $pattern, string $subject[, array &$matches]) 使⽤很频繁。函数返回匹配到的结果的次数。只匹配⼀次,参数matches只返回第⼀条结果。
preg_match_all(string $pattern, string $subject[, array &$matches]) 使⽤很频繁。函数返回匹配到的结果的次数。参数matches只返回所有结果。
替换字符串或数组
preg_replace($pattern, $replacement, $subject) 返回匹配过滤后的字符串或者数组。
preg_filter($pattern, $replacement, $subject)返回匹配过滤后的字符串或者数组。
这俩函数,都可以替换字符串,在字符串替换中,俩函数⽤法完全⼀致。
这俩函数,不仅可以替换字符串,还可以替换数组!在替换数组的时候,pre_filter会过滤掉没有匹配到的内容,⽽pre_replace不会,这就是他俩的唯⼀区别。
替换数组
preg_grep(string $pattern, array $input[, int flags = 0]) 返回匹配模式的数组条⽬。阉割版本的preg_filter
正则运算符转义
对⼀个字符串中的正则表达式的运算符:”. + * ? [ ] ^ $ ( ) { } = ! < > | : -“进⾏转义,转义成⾮正则表达式的运算符,否则正则表达式会认为其为运算符。
preg_quote(string $str[, string $delimiter = null ]) 转义正则表达式字符串。返回转义后的字符串。
正则表达式语法
你可以把正则表达式当做⼀门简单的语⾔来看,但是它的语法显然⽐⼀般的计算机语⾔要简单⼀些。
界定符
指定正则表达式的开始和结束,可以当成是计算机语⾔中的⼤括号{和}。⼀般有三种表现⽅式:
斜杠。例如/[0-9]/。这是最常⽤的⽅式,在PHP中,推荐使⽤这种⽅式。
井号。例如#[0-9]。
⼤括号。例如{[0-9]}。在正则表达式中,⼤括号还有其他作⽤,所以这种⽅式不推荐使⽤。
原⼦
正则表达式中最⼩的匹配单位,其实就是字符串中的字符。主要分为两⼤类:
可见原⼦:
⾁眼能够看见的字符。
标点符号。例如:”_ ? . ;,“等等
英⽂字母数字。例如:”a-z,A-Z,0-9“
汉字、⽇⽂、阿拉伯⽂等其他语⾔⽂字
正则表达式提取中文字符数理化公式符号。例如:”∩ ∪ π Ω “等等
其他可见字符
由于某些字符在正则表达式中属于特殊字符,那么在书写这类特殊字符的时候,应该注意要加上反斜杠,例如如果匹配^直接写/^/肯定不⾏,如果加上反斜杠,就可以了。^
不可见原⼦:
⾁眼看不到的。
空格。
换⾏符
回车符
制表符。其实就是按⼀下键盘tab键出来的
其他不可见字符
元字符
定义原⼦的筛选⽅式,队员原⼦进⾏归类,简化正则表达式的书写。
| 匹配两个或者多个分⽀选择。 和计算机语⾔中的含义是⼀样的:或者
[] 匹配⽅括号中的任意⼀个原⼦。
[^] 配配除⽅括号之外的任意字符串。
. 匹配除之外的任何单个字符。要匹配包括在内的任何字符,请使⽤象[.]的模式。
d ⼗进制数字,等同于[0-9]
D 匹配任意⼀个⾮⼗进制的数字,等同于[^0-9]
s 匹配任意⼀个不可见原⼦。等同于[fv]
S 匹配⼀个可见原⼦。等同于[^fv]
w 匹配任意数字、字母或下划线。既[0-9a-zA-Z_]
W 匹配任意⾮数字、字母或下划线。即[^0-9a-zA-Z_]
量词
表⽰某⼀个原⼦连续出现的数量。
{n} 表⽰前⾯的原⼦恰好出现n次
{n,} 表⽰前⾯的原⼦最少出现n次
{n,m} 表⽰前⾯的原⼦最少出现n此,最多出现m次
* 匹配0次、1次、或者多次。等同于{0,}
+ ⼀次或者多次。等同于{1,}
0次数或者1次。等同于{0,1}
边界控制
^ 匹配字符串开始的位置。即”必须以……为开头”
$ 匹配字符串结束的位置。即”必须以……为结尾”
模式单元
将模式单元中的括号及其正则表达式当做是⼀个原⼦来看待。
() 匹配其中的整体为⼀个原⼦。
修正模式
给正则表达式的匹配过程添加⼀种匹配模式
U 加U是懒惰匹配,不加U是默认的贪婪匹配。
i 忽略英⽂字母⼤⼩写。
x 忽略空⽩。(包括空格和按tab键输出的制表符)
s 让元字符.匹配包括换⾏符在内的所有字符。
e preg_replace()在替换字符串中对逆向引⽤作正常的替换。简单的说,就是PHP会把replace的结果当做PHP代码。(替换字符串要符
合php的语法规范)
例如:echo preg_replace('/(d+),(d+)/e', '$1+$2', '2,3');会输出5。
书写⽅式为:
$pattern = '/hello World/U'
$pattern = '/hello World/i'
$pattern = '/hello World/Ui'//可以任意组合
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论