首页 > 代码库 > 正则表达式学习(PCRE)
正则表达式学习(PCRE)
正则表达式是一个从左到右匹配目标字符串的模式。大多数字符自身就代表一个匹配 它们自身的模式。
1.分隔符:当使用 PCRE 函数的时候,模式需要由分隔符闭合包裹。分隔符可以使任意非字母数字、非反斜线、非空白字符。
经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)。下面的例子都是使用合法分隔符的模式。
/foo bar/#^[^0-9]$#+php+%[a-zA-Z0-9_-]%
如果分隔符需要在模式内进行匹配,它必须使用反斜线(\)进行转义。如果分隔符经常在 模式内出现, 一个更好的选择就是是用其他分隔符来提高可读性。
/http:\/\//
#http://#
需要将一个字符串放入模式中使用时,可以用 preg_quote() 函数对其进行 转义,它的第二个参数(可选)可以用于指定需要被转义的分隔符。
除了上面提到的分隔符,也可以使用括号样式的分隔符,左括号和右括号分别作为开始和结束 分隔符。
{this is a pattern}
可以在结束分隔符后面增加模式修饰符。 下面的例子是一个大小写不敏感的匹配:
#[a-z]#i
2.元字符
正则表达式的威力源于它可以在模式中拥有选择和重复的能力。 一些字符被赋予 特殊的涵义,使其不再单纯的代表自己,模式中的这种有特殊涵义的编码字符 称为 元字符.
共有两种不同的元字符:一种是可以在模式中方括号外任何地方使用的,另外一种 是需要在方括号内使用的。 在方括号外使用的元字符如下:
- \
- 一般用于转义字符
- ^
- 断言目标的开始位置(或在多行模式下是行首)
- $
- 断言目标的结束位置(或在多行模式下是行尾)
- .
- 匹配除换行符外的任何字符(默认)
- [
- 开始字符类定义
- ]
- 结束字符类定义
- |
- 开始一个可选分支
- (
- 子组的开始标记
- )
- 子组的结束标记
- ?
- 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)
- *
- 量词,0 次或多次匹配
- +
- 量词,1 次或多次匹配
- {
- 自定义量词开始标记
- }
- 自定义量词结束标记
模式中方括号内的部分称为“字符类”。 在一个字符类中仅有以下可用元字符:
- \
- 转义字符
- ^
- 仅在作为第一个字符(方括号内)时,表明字符类取反
- -
- 标记字符范围
正则表达式学习(PCRE)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。