正则表达式学习一(基础)
来源:互联网 发布:禅道 mac 安装 编辑:程序博客网 时间:2024/05/16 03:22
这几天遇到了用到正则的地方,以前很怕正则~~~~(>_<)~~~~ 今上午终于把它给弄出个所以然来了~\(≧▽≦)/~啦啦啦
这可是哥亲自手打出来的……
一、普通字符、元字符组成的正则表达式
1. c c是一个或多个普通字符例如,”b”匹配字符串b,”abc”匹配字符串”abc”
<?php
$pattern="/abc/";
$mystring="dadbccabcdefg";
preg_match($pattern,$mystring,$result);
print_r($result);
echo$result[0];//abc
?>
2. {n} n表示匹配确定的n次。例如,o{2}必须两个连续的o,不能匹配bob中的o,而能匹配google中的o
<?php
$pattern="/abc{2}/";
$mystring="dabccabcdefg";
preg_match($pattern,$mystring,$result);
print_r($result);
echo$result[0];//abcc
?>
3. {n,}同上一个,不过这里是至少匹配n个
<?php
$pattern="/abc{2}/";
$mystring="dabccabcdefg";
preg_match($pattern,$mystring,$result);
print_r($result);
echo$result[0];//abccc
?>
4. {n,m} 同上,至少匹配n次,最多m次
<?php
$pattern="/abc{2,4}/";
$mystring="dabcccccabcdefg";
preg_match($pattern,$mystring,$result);
print_r($result);
echo$result[0];//abcccc
?>
5. \ 转义字符
6. ^匹配输入字符串的开始位置。例如,^a不匹配ana中的最后一个a,匹配第一个a,
^ab 不能匹配bab如果设置了模式修正符为m,也匹配换行符和回车符之后的位置(\n \r)
<?php
$pattern="/^abc/";
$mystring="abcdda";
preg_match($pattern,$mystring,$result);
print_r($result);
echo$result[0];//abc
?>
7. $ 同上但匹配的是结束位置
<?php
$pattern="/abc$/";
$mystring="abcdabc";
preg_match($pattern,$mystring,$result);
print_r($result);
echo$result[0];//abc 匹配的是最后一个abc
?>
8. * 等价于{0,}即匹配前面的字符或子表达式0次或多次例如zo*能匹配z以及zoo(着这里匹配子表达式是:o,而不是zo,只要匹配z就可以了,o零次都可以)
<?php
$pattern="/abc*/";
$mystring="ab";
preg_match($pattern,$mystring,$result);
print_r($result);
echo$result[0];//ab
?>
9. +同上。等价于{1,}即匹配前面的字符或子表达式0次或多次例如zo+能匹配zo以及zoo但不匹配z
10. ?等价于{0,1},当该字符跟在任何一个其他限制符(*、+、?、{n}、{n,},{n,m})后面时,匹配模式是“非贪心”的。“非贪心”搜索到的尽可能短的字符串,而默认贪心则尽可能长,例如,”oooo”中,”o+?”只能匹配单个o而o+匹配所有的o。* + ? 都称为贪心的。
11. .匹配除”\n”之外的任何单个字符。若要匹配\n在内的任意字符,请使用诸如[\s\S]之类的模式
12. x|y匹配x或y 例如z|flood匹配 z或flood
13. [xyz]字符集合匹配所包含的任何一个字符,例如[abc]匹配plain中的a,也可以匹配bea中的b
14. [^xyz]匹配未包含的任意字符。例如,[^abc]可以匹配plain中p
15. [a-z]字符范围,匹配指定范围的任意字符[a-z][0-9][A-Z],例如^[A-Za-z0-9]表示由数字和26个英文字母组成的字符串
16. [^a-z]匹配任何不在指定范围内的任意字符。
二、正则表达式转义语法
1. \b匹配一个单词该单词必须位于边界,也就是指单词边必须有空格。例如”er\b”可以匹配never中的er(这时er位于边界)但不能匹配verb中的er(这时er没有位于边界)
2. \B与上一个相反,”er\B”能匹配verb中的er但不能匹配never中的
3. cx匹配由x指定的ASCII控制字符。例如,\cC匹配Ctrl+C,\cM匹配一个Ctrl+M(一个换行符),x的值必须位于a-zA-Z中否则将c视为一个原义的c字符本身
<?php
$pattern="/d\cM/";
$mystring="d
sdf";
preg_match_all($pattern,$mystring,$result);
print_r($result);//Array ( [0] => Array ( [0] => d) )
echo$result[0];
?>
4. \d等价于[0-9] ,\D等价于[^0-9]
5. \f匹配一个换页符等价于\x0c和cL;\n匹配一个换行符等价于\x0a和\cJ;\r匹配一个回车符,等价于\x0d和\cM;\s匹配任何单个空白字符,包括空格、制表符、换页符等等,等价于[\f\n\r\t\v]
$pattern="/\s[A-Za-z0-9]/";
$mystring="foobar";
preg_match_all($pattern,$mystring,$result);
print_r($result);//Array ([0] => Array ( [0] => b ) )
\S匹配任何单个字符,但不包含空白字符
<?php
$pattern="/\S[A-Za-z0-9]/";
$mystring="foobar";
preg_match_all($pattern,$mystring,$result);
print_r($result);//Array ( [0] => Array ( [0] => fo [1] => ba ) )
?>
\t匹配一个制表符 \w等价于[A-Za-z0-9_]多一个下划线 \W如匹配50%中的%
三、正则表达式的捕获语法
(pattern)匹配pattern并捕获该匹配的字表达式
(?:pattern) 不捕获匹配结果,这在使用或字符(|) 来组合一个模式的各个部分是很有用的,例如industr(?:y|ies)就是一个比industry|industries 更简略的表达式
(?=pattern) (?!pattern)
圆括号包围的表达式被称为字表达式也称为捕获语法,他们将被存储起来用作他用
四、优先权顺序
\转义符 ()、(?:)、(?!)、[]圆括号和方括号 *+?{n}{n,}{n,m}限定符
^$\任何元字符位置和顺序
|或运算
五、常用函数
preg_match() preg_match_all() preg_replace() preg_split()
- 正则表达式学习一(基础)
- 正则表达式基础(一)
- 正则表达式基础(一)
- 正则表达式基础(一)
- 正则表达式基础(一)
- Python基础_正则表达式学习一
- 正则表达式学习(一)
- 学习正则表达式(一)
- 正则表达式学习(一)
- 正则表达式学习(一)
- 正则表达式学习(一)
- 正则表达式学习 (一)
- 学习正则表达式(一)
- 学习正则表达式(一)
- 正则表达式学习(一)
- 正则表达式学习(一)
- 正则表达式学习(一)
- 正则表达式基础(一)
- aspnet 怎么获取浏览器等客户端请求的url地址?
- gvim中文菜单栏无法显示问题
- C#实现字符串按多个字符采用Split方法分割
- android 中的 Bitmap 相关
- linux 恢复面板默认设置
- 正则表达式学习一(基础)
- dp优化专辑 D - Party at Hali-Bula [树形dp]
- 26. A good beginning makes a good ending. 善始者善终
- PHP生成中文拼音
- 大运
- 调试JavaScript错误的四种解决方案
- 软件开发人员的作战手册 - 让程序员活的久一点 .
- 1956 计算罚时
- 人生修养