
正则表达式(Regular Expression)是一种文本模式,通常用于检查字符串是否包含某个子字符串,替换匹配的子字符串或从string中提取满足某些条件的子字符串. 我想使用php作为搜寻器. 对内容进行爬网之后,我需要匹配一些必需的内容,但是之前我没有研究过正则表达式,并且它处于可以理解且无法编写的水平. 只需学习一点,解决手中的问题,即可对正则表达式有深刻的了解. 本来我想用python来做的,但是一个简单的个人博客系统,添加的技术堆栈越多,维护起来就越麻烦,因此也可以使用php来实现. 实际上,php也具有类似于beautifulsoup的html解析工具. 我听不懂毕竟,我需要的不是太麻烦. 如果需要,您也可以看一下. 下面专门介绍在PHP中使用正则表达式.
preg_filter执行正则表达式搜索并替换preg_grep返回与模式匹配的数组条目preg_last_error返回最后一个正则执行错误代码preg_match_all执行全局正则表达式匹配preg_match执行正则表达式匹配preg_quote转义正则表达式字符preg_replace_callback_array执行正则表达式搜索并用回调函数preg_replace_callback替换执行正则表达式搜索,并用回调preg_replace替换执行正则表达式搜索,替换preg_split用正则表达式分隔字符串
\将下一个字符标记为特殊字符,文字字符,后向引用或八进制转义字符. 例如,“ n”与字符“ n”匹配. ‘\ N’匹配换行符. 序列“ \”与“ \”匹配,“(”与“(”匹配.
^匹配输入字符串的开始位置. 如果设置了RegExp对象的Multiline属性,则^也将匹配“ \ n”或“ \ r”之后的位置.
$与输入字符串的结束位置匹配. 如果设置了RegExp对象的Multiline属性,则$也匹配“ \ n”或“ \ r”之前的位置.
?匹配前面的子表达式零或一次. 例如,“做(es)?”可以匹配“做”或“做”. ?等效于{0,1}.
{n} n是一个非负整数. 确定匹配n次. 例如,“ o {2}”不能与“鲍勃”中的“ o”匹配,但可以与“食品”中的两个o匹配.
{n,} n是一个非负整数. 至少匹配n次. 例如,“ o {2,}”不能与“ Bob”中的“ o”匹配,但可以与“ foooood”中的所有“ o”匹配. “ O {1,}”等同于“ o +”. “ O {0,}”等同于“ o *”.
{n,m} m和n是非负整数,其中n <= m. 至少匹配n次,最多匹配m次. 例如,“ o {1,3}”将与“ fooooood”中的前三个o匹配. 'O {0,1}'等同于'o?'. 请注意,逗号和两个数字之间不能有空格.

?当字符紧跟任何其他限定词(*,+,?,{n},{n,},{n,m})时,匹配模式为非贪婪. 非贪婪模式尽可能少地匹配搜索到的字符串,而默认贪婪模式则尽可能地匹配搜索到的字符串. 例如,对于字符串“ oooo”,“ o +?”将匹配单个“ o”,而“ o +”将匹配所有“ o”.
. 匹配除换行符(\ n,\ r)以外的任何单个字符. 要匹配包括“ \ n”在内的任何字符,请使用“(. | \ N)”之类的模式.
(pattern)匹配pattern并获得此匹配. 可以从生成的Matches集合中获取获得的匹配项. 在VBScript中使用SubMatches集合,在JScript中使用$ 0…$ 9属性. 要匹配括号字符,请使用“((或”)”.
(?:模式)匹配模式,但是没有得到匹配结果,也就是说,这是一个没有得到的匹配,不会被存储以备后用. 当使用“或”字符(|)组合模式的各个部分时,这很有用. 例如,“ indust(?: Y | ies)比“行业|行业”.
(?= pattern)向前肯定断言,在与pattern匹配的任何字符串的开头匹配搜索字符串. 这是非获取性匹配,这意味着无需获取匹配以供以后使用. 例如,“ Windows(?= 95 | 98 | NT | 2000)”可以匹配“ Windows2000”中的“ Windows”,但不能匹配“ Windows3.1”中的“ Windows”. 预检查不消耗字符,也就是说,在匹配发生后,对下一个匹配的搜索将在最后一次匹配之后立即开始,而不是在包含预检查的字符之后开始.
(?! pattern)否定断言(negative assert),在与模式不匹配的任何字符串的开头匹配搜索字符串. 这是非获取性匹配,这意味着无需获取匹配以供以后使用. 例如,“ Windows(?!95 | 98 | NT | 2000)”可以匹配“ Windows3.1”中的“ Windows”,但不能匹配“ Windows2000”中的“ Windows”. 预检查不消耗字符,也就是说,在匹配发生后,对下一个匹配的搜索将在最后一次匹配之后立即开始,而不是在包含预检查的字符之后开始.
(?<=模式)在正向查找后看,类似于正向查找,但方向相反. 例如,“(?<= 95 | 98 | NT | 2000)Windows”可以匹配“ 2000Windows”中的“ Windows”,但不能匹配“ 3.1Windows”中的“ Windows”. (?<!模式)反向负预检查,类似于正负预检查,但方向相反. 例如,“(?<!95 | 98 | NT | 2000)Windows”可以匹配“ 3.1Windows”中的“ Windows”正则表达式怎么使用,但不能匹配“ 2000Windows”中的“ Windows”. x | y匹配x或y. 例如,‘z |食物”可以匹配“ z”或“食物”. ‘(Z | f)ood’匹配“ zood”或“ food”.
[xyz]字符集. 匹配包含的任何字符. 例如,“ [abc]”可以与“普通”中的“ a”匹配.
[^ xyz]负字符集. 匹配任何不包含的字符. 例如,“ [^ abc]”可以与“普通”中的“ p”,“ l”,“ i”,“ n”匹配.

[a-z]字符范围. 匹配指定范围内的任何字符. 例如,“ [a-z]”可以匹配从“ a”到“ z”的任何小写字母字符.
[^ a-z]负字符范围. 匹配不在指定范围内的任何字符. 例如,“ [^ a-z]”可以匹配不在“ a”到“ z”范围内的任何字符.
\ b匹配单词边界,即单词和空格之间的位置. 例如,“ er \ b”可以与“从不”中的“ er”匹配,而不能与“动词”中的“ er”匹配.
\ B匹配非单词边界. “ Er \ B”可以与“动词”中的“ er”匹配,而不能与“从不”中的“ er”匹配.
\ cx与x指示的控制字符匹配. 例如,\ cM与Control-M或回车符匹配. x的值必须是A-Z或a-z中的一个. 否则,请将c视为原义的“ c”字符.
\ d匹配数字字符. 相当于[0-9].
\ D匹配一个非数字字符. 等效于[^ 0-9].
\ f与换页符匹配. 等效于\ x0c和\ cL.
\ nmatch换行符. 等效于\ x0a和\ cJ.

\ r匹配回车符. 等效于\ x0d和\ cM.
\ s匹配任何空白字符,包括空格,制表符,换页符等. 等效于[\ f \ n \ r \ t \ v].
\ S匹配任何非空白字符. 等效于[^ \ f \ n \ r \ t \ v].
\ t匹配制表符. 等效于\ x09和\ cI.
\ v匹配垂直标签. 等效于\ x0b和\ cK.
\ w匹配字母,数字,下划线. 等同于“ [A-Za-z0-9 _]”.
\ W匹配非字母,数字和下划线. 等同于“ [^ A-Za-z0-9 _]”.
\ xn匹配n,其中n是十六进制转义值. 十六进制转义值必须为两位数. 例如,“ \ x41”匹配“ A”. “ \ X041”等效于“ \ x04”和“ 1”. 您可以在正则表达式中使用ASCII编码.
\ num匹配num,其中num是一个正整数. 对获得的匹配的引用. 例如,“(. )\ 1”匹配两个连续的相同字符.

\ n标识八进制转义值或向后引用. 如果在\ n之前至少获得n个子表达式,则n是向后引用. 否则,如果n是八进制数字(0-7),则n是八进制转义值.
\ nm标识八进制转义值或向后参考. 如果\ nm之前至少有nm个子例程,则nm是向后引用. 如果在\ nm之前至少有n个采集,则n是向后引用,后跟文本m. 如果不满足上述条件,则如果n和m均为八进制数字(0-7),\ nm将匹配八进制转义值nm.
\ nml如果n是八进制数(0-3),并且m和l都是八进制数(0-7),则匹配八进制转义值nml.
\不匹配n,其中n是由四个十六进制数字表示的Unicode字符. 例如,\ u00A9与版权符号(?)相匹配.
The
限定符用于指定正则表达式的给定组件必须出现多少次匹配. or或+有6种类型. 或{n}或{n,}或{n,m}. \: 匹配前面的子表达式零次或多次. 例如,zo可以匹配“ z”和“ zoo”. 等效于{0,}. +: 匹配前面的子表达式一次或多次. 例如,“ zo +”可以匹配“ zo”和“ zoo”,但不能匹配“ z”. +等效于{1,}. ?匹配前面的子表达式零或一次. 例如,“做(es)?”可以匹配“ do”中的“ does”,“ does”中的“ does”和“ doxy”中的“ do”. ?等效于{0,1}. {n} n是一个非负整数. 确定匹配n次. 例如,“ o {2}”不能与“鲍勃”中的“ o”匹配,但可以与“食品”中的两个o匹配. {n,} n是一个非负整数. 至少匹配n次. 例如,“ o {2,}”不能与“ Bob”中的“ o”匹配,但可以与“ foooood”中的所有“ o”匹配. “ O {1,}”等同于“ o +”. “ O {0,}”等同于“ o *”. {n,m} m和n是非负整数,其中n <= m. 至少匹配n次正则表达式怎么使用,最多匹配m次. 例如,“ o {1,3}”将与“ fooooood”中的前三个o匹配. 'O {0,1}'等同于'o?'. 请注意,逗号和两个数字之间不能有空格.
\ cx与x指示的控制字符匹配. 例如,\ cM与Control-M或回车符匹配. x的值必须是A-Z或a-z中的一个. 否则,请将c视为原义的“ c”字符. \ f匹配换页. 等效于\ x0c和\ cL. \ n匹配换行符. 等效于\ x0a和\ cJ. \ r匹配回车符. 等效于\ x0d和\ cM. \ s匹配任何空白字符,包括空格,制表符,换页符等. 等效于[\ f \ n \ r \ t \ v]. 请注意,Unicode正则表达式将匹配全角空格字符. \ S匹配任何非空白字符. 等效于[^ \ f \ n \ r \ t \ v]. \ t匹配制表符. 等效于\ x09和\ cI. \ v匹配垂直制表符. 等效于\ x0b和\ cK.
$与输入字符串的结束位置匹配. 如果设置了RegExp对象的Multiline属性,则$也匹配“ \ n”或“ \ r”. 要匹配$字符本身,请使用\ $. ()标记子表达式的开始和结束. 可以获取子表达式以备后用. 要匹配这些字符,请使用(和).
^匹配输入字符串的开头. 如果设置了RegExp对象的Multiline属性,则^也将匹配\ n或\ r之后的位置. $匹配输入字符串的结尾. 如果设置了RegExp对象的Multiline属性,则$也将匹配\ n或\ r之前的位置. \ b匹配单词边界,即单词和空格之间的位置. \ B非单词边界匹配.
^匹配输入字符串的开头. 如果设置了RegExp对象的Multiline属性,则^也将匹配\ n或\ r之后的位置. $匹配输入字符串的结尾. 如果设置了RegExp对象的Multiline属性,则$也将匹配\ n或\ r之前的位置. \ b匹配单词边界,即单词和空格之间的位置. \ B非单词边界匹配.
艺术家ianzhi,原地址: %E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E%BC%8F%E7%9A%84%E4%BD% BF%E7%94%A8
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-190635-1.html
也从来不买这玩意