加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 19:52:17 所属栏目:百科 来源:网络整理
导读:详细解释:http://see.xidian.edu.cn/cpp/html/1432.html pcre正则匹配ip地址:http://yazku.blog.163.com/blog/static/12355625520100185272922/ 1. 自PHP 5.3.0起, POSIX 正则表达式 扩展被废弃。在 POSIX 正则和 PCRE 正则之间有一些不同,本页列出了在转

详细解释:http://see.xidian.edu.cn/cpp/html/1432.html

pcre正则匹配ip地址:http://yazku.blog.163.com/blog/static/12355625520100185272922/


1.自PHP 5.3.0起,POSIX 正则表达式扩展被废弃。在 POSIX 正则和 PCRE 正则之间有一些不同,本页列出了在转向PCRE 时最显著的需要知道的不同点。

  1. PCRE 函数需要模式以分隔符闭合。
  2. 不像POSIX,PCRE 扩展没有专门用于大小写不敏感匹配的函数。取而代之的是,支持使用i(PCRE_CASELESS)模式修饰符完成同样的工作。 其他模式修饰符同样可用于改变匹配策略。
  3. POSIX 函数从最左面开始寻找最长的匹配,但是 PCRE 在第一个合法匹配后停止。如果字符串 不匹配这没有什么区别,但是如果匹配,两者在结果和速度上都会有差别。为了说明这个不同,考虑下面的例子(来自Jeffrey Friedl 的《精通正则表达式》一书)。 使用模式one(self)?(selfsufficient)?在字符串oneselfsufficient上匹配,PCRE 会匹配到oneself,但是使用 POSIX,结果将是整个字符串oneselfsufficient。 两个子串都匹配原始字符串,但是 POSIX 将 最长的最为结果。

函数对照表
POSIX PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() eregi() split() preg_split()
spliti() sql_regcase() 无对等函数
posix正则表达式:
1.
^和$定位符指定字符串的开始和结束
^one:表示只匹配那些以one开头的字符串
$two: 表示只匹配那些以one结尾的字符串
字符^和$同时使用表示精确匹配
例如:^three$:表示只匹配字符串three
一个模式不包含^和$那么他可以与任何包含该模式的字符串匹配
^一旦加上方括号[]表示取非得匹配
posix量词:
*:匹配前面的表达式零次或者多次。如zo* 能匹配“z”以及“zoo” ,*等价于{0,}
+:匹配前面的字表达式一次或者多次。如‘zo+’能匹配“zo”以及“zoo”,但是不能匹配“z”。+等价于{1,}
?:匹配前面的子表达式零次或者一次,如“do(es)” 可以匹配“does”中的“do”,?等价于{0,1}
{n}:n是一个非负整数,匹配确定的n次,如“o{2}"不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o
{n,}:n是一个非负整数。至少能匹配n次
{n,m}:m和n都是非负整数其中n<=m。最少匹配n次最多匹配m次,如“o{1,3}"将匹配“foooood”中的前三个o。
‘o{0,1}等价于“0?” 请注意在逗号和两个数之间不能有空格
当在一组方括号内部使用^时,表示“非”,或者“排除”的意思,常常用来剔除某个字符
例子:
[^a-z]:除了小写字母以外的所有字符
[^/^]:表示除了()(/)(^)之外所有的字符



pcre正则表达式:
由于pcre语法支持更短的字符类和更多的特性因此比posix语法更加强大
1.pcre匹配
pcre函数要求表达式以分隔符开始和结束
在大多数的pcre实例中分隔符都用一个/ 可在引号内的表达式开始和结尾处看到。牢记,此分隔符并非表达式的一部分
在pcre表达式中的最后一个分隔符/后可添加一个修饰符来更改正则表达式的行为
如:
I :大小写不敏感的匹配
M:将一个字符串视为多行。视^定位符匹配换行符(n)之后的内容,$定位符匹配换行符(n)之前的内容
S:使小圆点(.)匹配任何字符,包括换行符(n)
X:从模式中删除空白符和注释
prce元字符说明:
A:只匹配字符串开头
b:匹配单词的边界
B:匹配除单启界之外的任意字符
d:匹配数字字符,与方括号表达式[0-9]相同
D:匹配非数字字符
s:匹配空白字符
S:匹配非空白字符
[]:方括号表达式
[a-z]:匹配所有的小写字母
[A-Z]:匹配所有的大写字母
[a-zA-Z]:匹配所有的大小写字母
[0-9]:匹配所有的数字
[0-9.-]:匹配所有的数字,句号和减号
[frtn]:匹配所有的白字符
():包围一个字符分组或者一个反向的引用
^:匹配行首
$:匹配行尾
. :匹配换行之外的任何字符
:引出下一个元字符
w:匹配任何一个只包含下划线以及字符数字的字符串,与方括号表达式[a-zA-Z0-9]相同
W:和上面的相反,匹配没有下划线以及字符数字的字符串
2.pcre正则表达式函数
(1)preg_match()函数
(2)preg_match_all()函数
(3)preg_quote()函数
(4)preg_split()函数
(5)preg_grep()函数
(6)preg_replace()函数
3.正则表达式vs函数
————————————————————
POSIX兼容正则和PERL兼容正则的逻辑区隔符号作用和使用方法完全一致:
[]:包含任选一操作的相关信息。
{}:包含匹配次数的相关信息。
():包含一个逻辑区间的相关信息,可被用来进行引用操作。
|:表示“或”,[ab]和a|b是等价的。
元字符与“[]”相关:

有两组不同的元字符:一种是模式中除了方括号内都能被识别的,还有一种是在方括号“[]”内被识别的。
POSIX兼容正则和PERL兼容正则“[]之外”“一致”的元字符:
有数种用途的通用转义符
^ 匹配字符串的开头
$ 匹配字符串的结尾
? 匹配0或者1
* 匹配 0 个或多个前面指定类型的字符
+ 匹配 1 个或多个前面指定类型的字符
POSIX兼容正则和PERL兼容正则“[]之外”“不一致”的元字符:
. PERL兼容正则匹配除了换行符外的任意一个字符
. POSIX兼容正则匹配任意一个字符
POSIX兼容正则和PERL兼容正则“[]之内”“一致”的元字符:
^ 取反字符,但仅当其为第一个字符时有效
- 指定字符ASCII范围,仔细研究ASCII码,你会发现[W-c]等价于[WXYZ^_`abc]
POSIX兼容正则和PERL兼容正则“[]之内”“不一致”的元字符:
- POSIX兼容正则中[a-c-e]的指定会抛出错误。
- PERL兼容正则中[a-c-e]的指定等价于[a-e]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读