正则表达式入门技术方案.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
正则表达式入门 Bardo QI 正则表达式到底是什么 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 我们用过的最简单的规则:文件查找通配符:“?”和“*” 总体来说,正则表达式是对一个字符串操作与运算表达式,能由一定标准的解析程序得出运算结果,从而实现字符串匹配与替换等操作的简化。 第一个正则表达式 从英文小说中查找 hi 但不能把him,high,history也找到,可以 \bhi\b \b表示的是一个空格,如果后面不一定有空格,那么, \bhi\w,那就找到了him,high,history 假如你要找的是hi后面不远处跟着一个Lucy,你应该用\bhi\b.*\bLucy\b。 其中,.*连在一起就意味着任意数量的不包含换行的字符。 第二个正则表达式 三位区号八位机号的电话号码 0\d\d-\d\d\d\d\d\d\d\d 其中\d指的是数字 可以简化为: 0\d{2}-\d{8} {}中表示的是重复的次数。 正则表达式的测试 PHP程序员最好用的测试工具是:mysql 主要因为:JS使用的是UNIX正则表达式,PHP同时支持PERL和UNIX正则表达式,而MYSQL也是UNIX正则表达式。 但使用MYSQL测试,最好使用MYSQL FRONT,这样,比PHPMYADMIN中,SQL查询提交后SQL语句不再显示要好一些。 需要注意的是,SQL语句中需要使用双引号。即让正则表达式在双引号中间。要测试匹配的字符串也要在双引号中。 例如: mysql select “fonfo” REGEXP “^fo$”; - 0(表示不匹配) mysql select “fofo” REGEXP “^fo”; - 1(表示匹配) 可以看出 “fonfo” REGEXP “^fo$” 实际是一个运算表达式。 关于MYSQL 与正则表达式,可以参见: MySql正则表达式功能的巧用 我们走到哪了? 我们现在有以下正则表达式的元字符 \b \w \d . * {} 这些都是什么意思? 更进一步 \d+匹配1个或更多连续的数字。下限是至少一次。 而*的下限是0次 再例: \b\w{6}\b 匹配刚好6个字母/数字的单词。 常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 匹配QQ号 :^\d{5,12}$ 因为QQ号最少是5个数字,目前最长是12位数字 {5,12}这里表示了从多少到多少 字符转义 要匹配正则表达式中用的字符,如\ 这就需要转义,应当写成\\ 类似,我们还有:\. \* \+ 等等 常用的限定符 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 字符范围 [aeiou] 匹配任何一个英文元音字母 [.?!] 匹配标点符号(.或?或!) 所以 [0-9]代表的含意与\d就是完全一致 同理 [a-z0-9A-Z_] 也完全等同于\w (当然,这种等同只能仅考虑英文) 错误 的QQ号改正: ^ [1-9] {1}\d{4,11}$ 反义 反义,有定义的元字符大写,即是反义,同样,字符集前加上^也是反义。所以: 代码/语法 说明 \W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹配不是单词开头或结束的位置 [^x] 匹配除了x以外的任意字符 [^aeiou] 匹配除了aeiou这几个字母以外的任意字符 你可以写了吗? \(?0\d{2}[) -]?\d{8} 这个表达式,(010或022或02912345678等都不出错 但是:010(022不出错,怎么办? 提示:语法分组问题! 并列 用|表示或者,把每一个规则分开,用|合并为一组共用。 0\d{2}-\d{8}|0\d{3}-\d{7} 表示的是3位区号8位号码,或4位区号7位号码 分组 字符可以指定重复次数,规则表达式如何指定重复次数? (\d{1,3}\.){3}\d{1,3} 这是匹配什么?IP地址 (\d{1,3}\.)这部分是1到3位数字加“.”,用括号表示

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档