正则表达式的写法规则:
[b]"/[/b]规则需要写在2个斜杠中间[b]/"[/b]。
[list]
[*]
([b].[/b] :小数点)用于匹配除换行符之外的所有字符。
[/*][*]
([b]\s[/b]:反斜杠小写s)用于匹配单个空格符,包括tab键和换行符;
[/*][*]
([b]\S[/b]:反斜杠大写S)用于匹配除单个空格符之外的所有字符;
[/*][*]
([b]\d[/b]:反斜杠d)用于匹配从0到9的数字;也可以这样写:[b][0-9][/b]
[/*][*]
([b]\w[/b]:反斜杠小写w)用于匹配字母,数字或下划线字符;
[/*][*]
([b]\W[/b]:反斜杠大写W)用于匹配所有与\w不匹配的字符;
[/*][/list]
[b]元字符包括: [/b]
+[b], [/b]
*[b],[/b]
?
元字符理解起来容易混淆,所以我在后面做了代码结果截图
“+”元字符规定其前导字符必须连续出现一次或多次
= 比如/es+/
与“tesseessssseast12354haeasashaha”字符串相匹配,首先要与第一个字母e匹配,然后匹配s,s必须出现一次或多次,请看实例截图。
“*”元字符规定其前导字符必须出现零次或连续多次
= 比如/es*/
与“tesseessssseast12354haeasashaha”字符串相匹配,首先与第一个字母e匹配,后面的s出现零次或者连续出现,看实例。
“?”元字符规定其前导对象必须连续出现零次或一次
= 比如/es?/
与“tesseessssseast12354haeasashaha”字符串相匹配,首先与第一个字母e匹配,后面的s出现零次或者最多出现一次(就是最后一个字母s不重复出现)。
示例代码:
$str = "tesseessssseast12354haeasashaha";
echo "=====".$str."
";
echo "/es+/:".preg_replace("/es+/","-\\0-",$str)."
";
echo "/es*/:".preg_replace("/es*/","-\\0-",$str)."
";
echo "/es?/:".preg_replace("/es?/","-\\0-",$str)."
";
?>
[b]执行结果截图:[/b]
[img]http://files.jb51.net/upload/201105/20110515024827832.jpg[/img]
另外如果觉得元字符“+*?”比较难理解可以用这种
[b]{ }[/b]方法代替:
比如es*我们可以写成es{0,},而es+我们可以写成es{1,},es?可以写成es{0,1},注意:当不确定次数的时候就不用写(也不用空格)。
当然我们要指定出现多少次的可以写成这样:[b]
es{3}[/b]表示s出现3次
[b]举一反三:[/b]
比如要[b]替换连续多个空格为一个空格[/b],我可以这样写:
[b]preg_replace("/\s+/"," ",$str);
[/b]比如要[b]找出字符串中的数字(整数)[/b]:[b]preg_replace("/\d+/", "([/b][b]\\0)", $str[/b][b]); [/b][b]\\0[/b]是表示符合规则的字符串值
比如要[b]找出字符串中的带小数点的数字[/b]:[b]
preg_replace("/\d+\.\d+/", "([/b]
[b]\\0)", $str[/b][b]); //这里的“\.”表示输出小数点[/b]
找出由字母组成的字符串:[b]
preg_replace("/[a-zA-Z]+/", "([/b]
[b]\\0)", $str[/b][b]
)[/b]
找出由(字母、数字混合)组成的字符串:[b]
preg_replace("/([a-zA-Z]|\d)+/", "([/b]
[b]\\0)", $str[/b][b]
)[/b]
[b][/b]
[b]正则表达式中“或”运算,使用 “
| ”[/b]
例如上面的例子:找出由(字母或数字)混合组成的字符串
[b]([a-zA-Z]|\d[/b][b]) [/b]也可以这样写[b]([a-zA-Z]|[0-9]) [/b]
“[b]
^[/b]”出现在 “[ ]”内时就被视做否定运算符;
[b][^0-9][/b]表示除了数字之外的任何字符。
而当“^”位于“[ ]”之外,或没有“[ ]”时,则应当被视做定位符。
定位符的意思就是比如:“
[b]^The[/b]”:开头一定要有”The”字符串;类似的:“
[b]en$[/b]”:$符号表示必须是en结尾。
其实认真看一遍就会发现正则表达式还是挺简单的,除非是我写的教程真的有问题。