« 上一篇 下一篇 »

正则表达式详解​

无论学习何种语言,正则表达式都是非常重要的一环,但是这一点虽不算是难点,但如果使用频率不高,很多东西还是非常容易忘记的,这篇博文就记录了常用的一些正则表达式及函数和一些简单案例

1、定界符

“/”是定界符,“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。同时为了正则更加灵活,引入了元字符,即“+”, “*”,以及 “?”。


(1)“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次

比如:/php+/,能够与“phpp”匹配,即字母ph后面连续出现一个或多个字母p的字符串相匹配。

(2)“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次

比如:/php*/能够与“phpddt”相匹配,即ph后面可以有0个或多个p

(3)“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。

比如:/php?/能够“pher”匹配,即phh后面可以有0个或者1个p


\s:用于匹配单个空格符,包括tab键和换行符;

\S:用于匹配除单个空格符之外的所有字符;

\d:用于匹配从0到9的数字;

\w:用于匹配字母,数字或下划线字符;

\W:用于匹配所有与\w不匹配的字符;

. :用于匹配除换行符之外的所有字符。


( ):标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。

 $a = "abc";
 $res = preg_match_all("/\w/", $a,$matchRes);

匹配结果为

array(1) {
  [0] => array(3) {
    [0] => string(1) "a"
    [1] => string(1) "b"
    [2] => string(1) "c"
  }
}

2.定位符用于规定匹配模式在目标对象中的出现位置。常用的有“^”, “$”, “\b” 以及 “\B”


(1)“^”定位符规定匹配模式必须出现在目标字符串的开头

(2)“$”定位符规定匹配模式必须出现在目标对象的结尾

(3)\b定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一

(4)“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内


"/^\w/"匹配结果为

array(1) {
  [0] => array(1) {
    [0] => string(1) "a"
  }
}

"/\w$/"匹配结果为

array(1) {
  [0] => array(1) {
    [0] => string(1) "c"
  }
}



3.php的正则匹配模式非常灵活,可以指定某一范围 

例如:

/[A-Z]/

上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。

/[a-z]/

上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。

/[0-9]/

上述正则表达式将会与从0到9范围内任何一个数字相匹配。

/([a-z][A-Z][0-9])+/

上述正则表达式将会与任何由字母和数字组成的字符串



4.可以同时与多种模式选择匹配

如/phpddt.com|phpddt|100/可以与“phpddt.com” “phpddt” “100”相匹配

5.否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串

例如:[^phpddt]匹配除了phpddt字符外的所有东西