- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京北大方正电子有限公司 正则表达式入门 北京北大方正电子有限公司 李彦娜 2008、6 概要 正则表达式是什么? 正则表达式干什么? 正则表达式怎么干? 正则表达式是什么 正则表达式是用某种模式去匹配一类字符串的表达式 正则表达式由一些普通字符和一些具有特殊含义的元字符组成。 正则表达式最早是由数学家Stephen Kleene于1956年提出,现在的标准已经被ISO批准和被Open Group组织认定 元字符 通配符 限定符 定位符 表示范围和选择的元字符 转义符 非捕获元字符 …… 通配符 字符 描述 . 匹配任意单个字符 \d 匹配任意数字 \w 匹配可成词的字符 \x 匹配任意十六进制数字 \s 匹配任意空白字符 限定符 字符 描述 * 匹配前面的子表达式零次或多次 + 匹配前面的子表达式一次或多次 ? 匹配前面的子表达式零次或一次 {n} 匹配确定的 n 次(n非负) {n,} 至少匹配n 次(n非负) {n,m} 最少匹配 n 次且最多匹配 m 次(n,m非负且n=m) 定位符 定位符不能使用限定符 元字符 描述 ^ 匹配字符串的开始 $ 字符串的结束 \b 匹配字符串的边界 \B 匹配字符串的非边界 范围、选择 元字符 描述 . 匹配任意单个字符 [] 匹配中括号中的任何一个字符,若要不匹配中括号内的字符,则在[后面加上^表示排除 - 指明范围 | 或 转义字符 \ 将下一个字符标记为特殊字符、或原义字符、或向后引用、或八进制转义符。 示例 \n 匹配换行符 \* 匹配* \( 匹配( \\ 匹配\ 非打印字符 字符 描述 \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 c 字符。 \f 匹配一个换页符。等价于 \x0c 和 \cL \n 匹配一个换行符。等价于 \x0a 和 \cJ。 \r 匹配一个回车符。等价于 \x0d 和 \cM。 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 \t 匹配一个制表符。等价于 \x09 和 \cI。 \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。 非捕获元字符 字符 描述 (?:) 不缓存所在的子表达式 (?=) 匹配的右侧必须满足?=后的模式 ?! 匹配的右侧必须不满足?=后的模式 (?=) 匹配的左侧必须满足?=后的模式 (?!) 匹配的左侧必须不满足?=后的模式 如何构造正则表达式 构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。 优先级 元字符 描述 \ 转义符 (), (?:), (?=), [] 子表达式和限定条件 *, +, ?, {n}, {n,}, {n,m} 限定符 ^, $, \metacharacter 位置和顺序 | 或 优先级升高 示例 ^[0-9]*[1-9][0-9]*$ //匹配正整数 ^((-\d+)|(0+))$ //匹配非正整数 ^-?\d+$ //匹配整数 ^(-?\d+)(\.\d+)?$ //匹配浮点数 ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 [\u4e00-\u9fa5] //匹配中文字符 贪婪与非贪婪匹配(1) 贪婪与非贪婪首先都要尽可能匹配 贪婪:尽可能多的匹配 字符串 表达式 匹配结果 说明 abcabca (a)(\w+) abcabca 其中的(\w+)会匹配a后的所有字符,即bcabca abcabca (a)(\w+)(a) abcabca 其中的(\w+)虽然也能匹配第一个a后的所有字符,但为了让后面的(a)匹配, (\w+)将匹配第一个a和最后一个a之间的所有字符,即bcabc,而让出最后一个a 贪婪与非贪婪匹配(2) 非贪婪:尽可能少的匹配 在限定匹配次数的元字符后加上一个”?” 字符串 表达式 匹配结果 说明 abcabca (a)(\w+?) ab 其中的(\w+?)只会匹配a后的b abcabca (a)(\w+?)(a) abca 为了让后面的(a)匹配,其中的(\w+) 将匹配第一个a后面的bc 反向引用 表达式中小括号 () 中包含的子表达式的匹配结果会被记录下来 利用\n可以引用前面第n个子表达式的匹配结果 子表达式的序号n以表达式中左括号” (” 的顺序排列 字符串 表达式 匹配结果 *hello*,#world# (\*|#)(.*?)(\1) 第
文档评论(0)