PHP学习笔记:PERL兼容正则表达式

PERL兼容正则可以使用任何不是字母、数字或反斜线(/)的字符作为定界符,如果作为定界符的字符必须被用在表达式本身中,则需要用反斜线转义。也可以使用(),{},[] 和 <> 作为定界符

 

模式修正符:修正符中的空格和换行被忽略,其它字符会导致错误。
i 如果设定此修正符,模式中的字符将同时匹配大小写字母。
m 当设定了此修正符,行起始(^)和行结束($)除了匹配整个字符串开头和结束外,还分别匹配其中的换行符(/n)的之后和之前。
s 如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。
x 如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符,包括两头,也都被忽略。
e 如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。 只有 preg_replace() 使用此修正符,其它 PCRE 函数将忽略之。
A 如果设定了此修正符,模式被强制为"anchored",即强制仅从目标字符串的开头开始匹配。
D 如果设定了此修正符,模式中的美元元字符仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其它换行符之前)。如果设定了 m 修正符则忽略此选项。
S 当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。如果设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。
U 本修正符反转了匹配数量的值使其不是默认的重复,而变成在后面跟上"?"才变得重复。即使"?"的默认匹配成为贪婪状态的。
X 模式中的任何反斜线后面跟上一个没有特殊意义的字母导致一个错误,从而保留此组合以备将来扩充。默认情况下,一个反斜线后面跟一个没有特殊意义的字母被当成该字母本身。
u 模式字符串被当成 UTF-8。

 

 

元字符不代表其自身,它们用一些特殊的方式来解析。有两组不同的元字符:一种是模式中除了方括号内都能被识别的,还有一种是在方括号内被识别的。

 

方括号之外的元字符有这些:
/ 有数种用途的通用转义符
^ 匹配字符串的开头(或在多行模式下行的开头,即紧随一换行符之后)
$ 匹配字符串的结尾(或在多行模式下行的结尾,即紧随一换行符之前)
. 匹配除了换行符外的任意一个字符(默认情况下)
[] 字符类定义的开始和结束,包含任选一操作的相关信息。
| 表示"或",[ab]和a|b是等价的。
() 子模式的开始和结束
? 匹配0或者1个前面指定类型的字符
* 匹配 0 个或多个前面指定类型的字符
+ 匹配 1 个或多个前面指定类型的字符
{} 包含匹配次数的相关信息。

 

模式中方括号内的部分称为"字符类"。字符类中可用的元字符为:
/ 通用转义字符
^ 排除字符类,但仅当其为第一个字符时有效
- 指出字符范围

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值