1. 元字符 [] ('和') : 定义一个字符集合;字符集合在不需要区分字母大小写(或者只需匹配某个特定部分)的搜索操作里比较常见。
2. 连字符 - ('特殊的元字符') :[0-9] 与 [0123456789] 完全等价;[A-Z]匹配从A到Z之间的所有大写字母;[a-z]匹配从a到z之间的所有小写字母;只能用在 [] 之间,在字符集合以外的地方,只是一个普通字符,不需要被转义。
3.元字符 ^ :对一个字符集合进行取非匹配;将作用于给定字符集合里的所有字符或字符区间。
4.转义字符 ('特殊字符的转义') :因为元字符在正则表达式中具有特殊含义,例如元字符 . 用来匹配任何一个单个字符,但无法单独匹配 . ,所以用.来单独匹配它。注意,元字符未加转义符时,要遵循元字符语法,例如[]要成对出现,除非 [ 或 ] 可以单独出现。如图。
5.元字符 + :匹配同一个字符或字符集合的多次重复(至少出现一次)。
注意,一般来说,当在字符集合里使用的时候,像 . 和 + 这样的元字符将被解释为普通字符,不需要被转义,但转义了也没有坏处。[w.] 和 [w.] 的使用效果是一样的。
6.元字符 * : 匹配同一个字符或字符集合的多次重复(可以没有出现)。
(5,6举例)邮箱格式正则表达式是:w+[w.]+@w+[w.]*.w+
7.元字符 ? : 只能匹配一个字符或字符集合的零次或一次出现,最多不超过一次。
举例,匹配URL地址的正则表达式是:http[s]?://[w./]+
举例,匹配Unix或Linux和Windows系统的空白行:[ ]? [ ]?
8.元字符 {} : 用来设定重复匹配次数;举例,匹配RGB值的正则表达式是:#[0-9A-Fa-f]{6}
重复次数可以是0, 正则表达式 : {0,3} 表示重复次数可以是0,1,2,3
最后一种用法是给出一个最小重复次数,举例,{3,} 表示至少重复3次或更多次。
9.防止过度匹配,元字符分为贪婪型和懒惰型,贪婪型会尽可能从一段文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配碰到的第一个匹配为止(懒惰型)。
在实际工作中,请务必根据具体情况来选用贪婪型还是懒惰型元字符。
10.限定符 ('单词边界') :用来匹配一个单词的开始或结尾。匹配且只匹配一个位置,不匹配任何字符。用cat匹配到的字符串的长度是3个字符(c,a,t),不是5个字符。
11.回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式。
12.回溯引用中,同一个子表达式可以被引用任意多次,只要在需要用到它的地方写出它的回溯引用就行了。
13.
$content = '313-555-1234'; $result = preg_replace("#(d{3})(-)(d{3})(-)(d{4})#", '($1) $3-$5', $content);
14.正则表达式标记要匹配的文本的位置,前后查找(lookaround),向前查找,向后查找。
15.向前查找:指定了一个必须匹配但不在结果中返回的模式。
$content = 'https://www.baidu.com/'; preg_match("#(.+)(?=:)#", $content, $subject); print_r($subject[1]);
16.向前查找模式的长度是可变的,它们可以包含.和+之类的元字符,所以非常灵活;
而向后查找模式只能是固定长度,这是一条几乎所有的正则表达式实现都遵守的限制。
17.对前后查找取非:
18.回溯引用条件语法:(?(backre-ference)true-regex|false-regex)