- 浏览: 783873 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
aliang032:
文章很赞,有几个缺点:1、是你的服务端是单进程的,如果进程挂了 ...
php socket编程实例详解 -
最佳蜗牛:
最佳蜗牛 写道是不是缺少了一个toolbar.Realize( ...
wxPython写的简易编辑器(原创) -
最佳蜗牛:
是不是缺少了一个toolbar.Realize()?
wxPython写的简易编辑器(原创) -
最佳蜗牛:
2.7.3版本里不能显示工具栏的图标
wxPython写的简易编辑器(原创) -
sogo6:
我怎么安装的也不行? 裸奔啊。。。。。
让TextMate支持中文显示
正则表达式(Regular Expression,缩写为regexp,regex或regxp),又称正规表达式、正规表示式或常规表达式或正规化表示法或正规表示法,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串
。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容
。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的在正则表达式引擎。正则表达式这个概念最初是由 Unix中的工具软件(例如sed和grep)普及开的。(摘自维基百科)
PHP同时使用两套正则表达式规则,一套是由电气和电子工程师协会(IEEE)制定的POSIX Extended 1003.2兼容正则(事实上PHP对此标准的支持并不完善),另一套来自PCRE(Perl Compatible Regular Expression)库提供PERL兼容正则,这是个开放源代码的软件,作者为 Philip Hazel。
使用POSIX兼容规则的函数有:
ereg_replace()
ereg()
eregi()
eregi_replace()
split()
spliti()
sql_regcase()
mb_ereg_match()
mb_ereg_replace()
mb_ereg_search_getpos()
mb_ereg_search_getregs()
mb_ereg_search_init()
mb_ereg_search_pos()
mb_ereg_search_regs()
mb_ereg_search_setpos()
mb_ereg_search()
mb_ereg()
mb_eregi_replace()
mb_eregi()
mb_regex_encoding()
mb_regex_set_options()
mb_split()
使用PERL兼容规则的函数有:
preg_grep()
preg_replace_callback()
preg_match_all()
preg_match()
preg_quote()
preg_split()
preg_replace()
定界符:
POSIX兼容正则没有定界符,函数的相应参数会被认为是正则。
PERL兼容正则可以使用任何不是字母、数字或反斜线(\)的字符作为定界符,如果作为定界符的字符必须被用在表达式本身中,则需要用反斜线转义。也可以使用(),{},[] 和 <> 作为定界符
修正符:
POSIX兼容正则没有修正符。
PERL兼容正则中可能使用的修正符(修正符中的空格和换行被忽略,其它字符会导致错误):
i (PCRE_CASELESS):
匹配时忽略大小写。
m(PCRE_MULTILINE):
当设定了此修正符,行起始(^)和行结束($)除了匹配整个字符串开头和结束外,还分别匹配其中的换行符(\n)的之后和之前。
s(PCRE_DOTALL):
如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。
x(PCRE_EXTENDED):
如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略。
e:
如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。 只有 preg_replace() 使用此修正符,其它 PCRE 函数将忽略之。
A(PCRE_ANCHORED):
如果设定了此修正符,模式被强制为“anchored”,即强制仅从目标字符串的开头开始匹配。
D(PCRE_DOLLAR_ENDONLY):
如果设定了此修正符,模式中的行结束($)仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,也会被匹配在里面。如果设定了 m 修正符则忽略此选项。
S:
当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。如果设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。
U(PCRE_UNGREEDY):
使“?”的默认匹配成为贪婪状态的。
X(PCRE_EXTRA):
模式中的任何反斜线后面跟上一个没有特殊意义的字母导致一个错误,从而保留此组合以备将来扩充。默认情况下,一个反斜线后面跟一个没有特殊意义的字母被当成该字母本身。
u(PCRE_UTF8):
模式字符串被当成UTF-8。
逻辑区隔:
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]。
匹配次数与“{}”相关:
POSIX兼容正则和PERL兼容正则在匹配次数方面完全一致:
{2}:表示匹配前面的字符2次
{2,}:表示匹配前面的字符2次或多次,默认都是贪婪(尽可能多)的匹配
{2,4}:表示匹配前面的字符2次或4次
逻辑区间与“()”相关:
使用()包含起来的区域是一个逻辑区间,逻辑区间的主要作用是体现出一些字符出现的逻辑次序,另一个用处就是可以用来引用(可以将此区间内的值引用给一个变量)。后一个作用比较奇特:
<?php
$str = "http://www.163.com/";
// POSIX兼容正则:
echo ereg_replace("(.+)","<a href = \\1 >\\1</a>",$str);
// PERL兼容正则:
echo preg_replace("/(.+)/","<a href = $1 >$1</a>",$str);
// 显示两个链接
?>
在引用的时候,括号是可以嵌套的,逻辑次序是按照“(”出现的次序来标定的。
类型匹配:
POSIX兼容正则:
[:upper:]:匹配所有的大写字母
[:lower:]:匹配所有的小写字母
[:alpha:]:匹配所有的字母
[:alnum:]:匹配所有的字母和数字
[:digit:]:匹配所有的数字
[:xdigit:]:匹配所有的十六进制字符,等价于[0-9A-Fa-f]
[:punct:]:匹配所有的标点符号,等价于 [.,"'?!;:]
[:blank:]:匹配空格和TAB,等价于[ \t]
[:space:]:匹配所有的空白字符,等价于[ \t\n\r\f\v]
[:cntrl:]:匹配所有ASCII 0到31之间的控制符。
[:graph:]:匹配所有的可打印字符,等价于:[^ \t\n\r\f\v]
[:print:]:匹配所有的可打印字符和空格,等价于:[^\t\n\r\f\v]
[.c.]:功能不明
[=c=]:功能不明
[:<:]:匹配单词的开始
[:>:]:匹配单词的结尾
PERL兼容正则(这里可以看出PERL正则的强大):
\a alarm,即 BEL 字符(’0)
\cx "control-x",其中 x 是任意字符
\e escape(’0B)
\f 换页符 formfeed(’0C)
\n 换行符 newline(’0A)
\r 回车符 carriage return(’0D)
\t 制表符 tab(’0)
\xhh 十六进制代码为 hh 的字符
\ddd 八进制代码为 ddd 的字符,或 backreference
\d 任一十进制数字
\D 任一非十进制数的字符
\s 任一空白字符
\S 任一非空白字符
\w 任一“字”的字符
\W 任一“非字”的字符
\b 字分界线
\B 非字分界线
\A 目标的开头(独立于多行模式)
\Z 目标的结尾或位于结尾的换行符前(独立于多行模式)
\z 目标的结尾(独立于多行模式)
\G 目标中的第一个匹配位置
发表评论
-
基于libmemcached,php扩展memcached的安装
2011-03-29 18:23 1604一,为什么要装memcached扩展 memcached ... -
OpenCV和PHP的人脸识别技术
2011-03-15 00:52 3983OpenCV安装之前必须依赖的包:(请先安装好) pkgco ... -
php代码安全:增加这三行php代码的安全,性能和兼容性
2010-10-09 16:42 1266如何改进以下的这行php代码: <? echo(&q ... -
PHP代码安全:register_globals的设置off
2010-10-09 16:29 1360在PHP编码的时候,要考虑到很多安全问题,不然将可能被攻击。下 ... -
PHP 加速器:APC、eAccelerator、XCache比较
2010-09-29 11:24 2607一直想找一些关于PHP加速的文章,偶然看到杀 客 的这篇文 ... -
PHP APC 配置详解
2010-09-29 10:16 6393APC是Alternative PHP Cache的简称,是 ... -
安装PHP的Parsekit扩展
2010-09-29 09:54 1269安装PHP的Parsekit扩展 从http://pecl. ... -
PHP算法:折半查找法(又称二分查找法)
2010-09-26 13:12 2297二分查找又称折半查找 ,它是一种效率较高的查找方法。 ... -
PHP算法:直接插入排序
2010-09-26 12:56 1316直接插入排序(Straight Insertion Sort) ... -
PHP算法:冒泡排序与快速排序
2010-09-26 12:41 1845写一个排序算法,可以是冒泡排序或者快速排序,假设待排序对象是一 ... -
[转]PHP的错误报告error_reporting
2010-09-25 11:41 1527error_reporting 设定 ... -
PHP正则表达式:将1234567890转换成1,234,567,890 每3位用逗号隔开的形式
2010-09-25 10:52 1656“四项处理”的作用是与字符相匹配,然后根据是否能找到要匹配的字 ... -
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2010-09-25 10:19 4663PHP函数篇详解十进制、二进制、八进制和十六进制互相转 ... -
php socket通信的基础知识
2010-09-25 09:03 7411迷人而又让人容易糊涂的套接字(Sockets)。Sockets ... -
php socket编程实例详解
2010-09-24 23:10 12540让我们以一个基本的例子开始---一个接收输入字符串,处理并返回 ... -
PHP SPL,遗落的宝石
2010-09-24 22:23 1127英文原文:http://www.rafae ... -
PHPER进阶必备知识:详解SQL性能优化十条经验
2010-09-17 22:02 8121.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE ... -
mysql_fetch_array与mysql_fetch_row有什么区别?
2010-09-17 21:54 3999两种查询函数array / row区别 格式:mysql ... -
php 排序函数 sort、rsort、asort、arsort、ksort、krsort的区别
2010-09-17 18:43 34161,快速创建数组的函数range() 比如range()函数 ... -
在smarty模板文件当中,直接使用PHP代码
2010-09-11 23:19 1752smarty允许在模板中直接嵌入 php 脚本. 是否处理这些 ...
相关推荐
本篇文章是对posix与perl标准的正则表达式区别进行了详细的分析介绍,需要的朋友参考下
第3章:正则表达式的特性和流派概览.... 83 在正则的世界中漫步... 85 正则表达式的起源... 85 最初印象... 91 正则表达式的注意事项和处理方式... 93 集成式处理... 94 程序式处理和面向对象式处理... 95 ...
在PHP中支持PCRE(Perl Compatible Regular Expression)和POSIX(Portable Operation System interface)两套正则表达式处理函数,两套函数库功能相似,在执行效率上PCRE略占优势,因此自PHP 5.3.0版本以后POSIX正则...
正则表达式(Regular Expression) 正则表达式系统: 1.POSIX 2.Perl PHP中使用的regex是PCRE: NOTE:PCRE(Perl兼容正则表达式,Perl Compatible Regular Expressions) PCRE语法: 1.定界符 必须成对出现,可以使用除0-9a-...
Perl 兼容正则表达式 (PCRE) 库是一组使用与 Perl 5 相同的语法和语义实现正则表达式模式匹配的函数。除了一组 POSIX 兼容包装函数之外,PCRE 还拥有自己的原生 API。
PHP支持两种正则表达式,POSIX风格的正则表达式和兼容Perl风格的正则表达式。
首先来看看 POSIX 风格正则表达式的两个主要函数: ereg 函数:(正则表达式匹配) 格式:int ereg ( string pattern, string string [, array ®s] ) 注意:使用 Perl 兼容正则表达式语法的 preg_match() 函数...
特征支持以下样式的正则表达式: Perl样式的正则表达式(模块Re.Perl ); Posix扩展正则表达式(模块Re.Posix ); Emacs样式的正则表达式(模块Re.Emacs ); Shell样式的文件Re.Glob (模块Re.Glob )。 也可以...
在PHP中有两套正则表达式函数库,两者功能相似,只是执行效率略有差异: 一套是由PCRE(Perl Compatible Regular Expression)库提供的。使用“preg_”为前缀命名的函数; 一套由POSIX(Portable Operating System ...
全英oracle正则表达式参考手册 Oracle Regular Expressions Pocket Reference is part tutorial and part quick-reference. It's suitable for those who have never used regular expressions before, as well as ...
PCRE(Perl Compatible Regular Expressions)库是一组函数,使用与Perl 5相同的语法和语义实现正则表达式模式匹配。除了一组POSIX兼容的包装函数外,PCRE还拥有自己的原生API。 Nginx的http模块使用pcre来解析正则...
•正则匹配:根据正则表达式匹配相应的内容•正则替换:根据正则表达式匹配内容并替换•正则分割:根据正则表达式分割字符串在 PHP 中有两类正则表达式函数,一类是 Perl 兼容正则表达式函数,一类是 POSIX 扩展正则...
1.正则表达式基础知识 含义:由普通字符和(a-z)和一些特殊字符组成的字符串模式 功能:有效性验证。 替换文本。 从一个字符串提取一个子字符串。 分类:POSIX和Perl POSIX风格更容易掌握,但不能用于二进制模式,而...
PCRE库使用和Perl相同的语法规则实现了正则表达式的模式匹配,其使用以“preg_”为前缀命名的函数。另一套是由POSIX(Portable Operation System interface)扩展库提供的。POSIX扩展的正则表达式由POSIX 1003.2定义...
FLRE-快速光照正则表达式-快速光照正则表达式库放到火(F AST大号飞行řegularëXpressions的)是一种快速,安全和有效的正则表达式库,其在对象帕斯卡(Delphi和自由帕斯卡)中实现,但是这是从其它语言如C / C ++...
许多程序使用正则表达式来查找和替换文本。 然而,它们往往带有自己不同的风味。 您可能会期望大多数现代软件和编程语言都使用 Perl 风格的一些变体,“PCRE”; 然而,命令行工具(grep、less、...)通常使用 ...
2、PHP中两个常用的正则函数preg_match 正则函数,以perl语言为基础ereg 正则函数,以POSIX基础 (Unix 、 Script)3、正则表达式中包括的元素 (1)、原子(普通字符:a-z A-Z 0-9 、原子表、 转义字符) (2)、元...