正则表达式入门正则表达式 学习参考 推荐
常用正则表达式语法大全
正则表达式是一种用于匹配和处理文本的强大工具,可以在很多编程语言和文本编辑器中使用。
以下是一些常用的正则表达式语法:1.字符匹配:–.: 匹配任意单个字符,不包括换行符。
–\w: 匹配任意字母、数字或下划线。
–\d: 匹配任意数字。
–\s: 匹配任意空白字符,包括空格、制表符、换行等。
–[...]: 匹配方括号内的任意字符。
例如,[aeiou]匹配任意一个元音字母。
–[^...]: 匹配除了方括号内字符之外的任意字符。
例如,[^aeiou]匹配任意一个非元音字母。
2.重复匹配:–*: 匹配前一个字符0次或多次。
–+: 匹配前一个字符1次或多次。
–: 匹配前一个字符0次或1次。
–{n}: 匹配前一个字符恰好n次。
–{n,}: 匹配前一个字符至少n次。
–{n,m}: 匹配前一个字符至少n次,最多m次。
3.边界匹配:–^: 匹配字符串的开始位置。
–$: 匹配字符串的结束位置。
–\b: 匹配单词边界,即单词前后的位置。
–\B: 匹配非单词边界的位置。
4.分组和捕获:–(): 将括号内的表达式视为一个分组。
–(?:): 类似于普通分组,但不进行捕获。
–\n: 反向引用,引用第n个分组的内容。
5.特殊字符转义:–\: 转义字符,用于匹配特殊字符本身。
6.修饰符:–i: 忽略大小写。
–g: 全局匹配,不仅匹配第一个结果。
–m: 多行匹配,使^和$匹配每一行的开始和结束。
这里列举了一些常用的正则表达式语法,但实际使用中,还有更多复杂的语法和特性,可以根据具体需求查阅更详细的正则表达式文档和教程。
不同编程语言和文本编辑器对正则表达式的支持也有所不同,所以在实际应用中需要根据具体的环境进行调整。
史上最全常用正则表达式大全
史上最全常⽤正则表达式⼤全很多不太懂正则的朋友,在遇到需要⽤正则校验数据时,往往是在⽹上去找很久,结果找来的还是不很符合要求。
所以我最近把开发中常⽤的⼀些正则表达式整理了⼀下,在这⾥分享⼀下。
给⾃⼰留个底,也给朋友们做个参考。
⼀、校验数字的表达式1. 数字:^[0-9]*$2. n位的数字:^\d{n}$3. ⾄少n位的数字:^\d{n,}$4. m-n位的数字:^\d{m,n}$5. 零和⾮零开头的数字:^(0|[1-9][0-9]*)$6. ⾮零开头的最多带两位⼩数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$7. 带1-2位⼩数的正数或负数:^(\-)?\d+(\.\d{1,2})?$8. 正数、负数、和⼩数:^(\-|\+)?\d+(\.\d+)?$9. 有两位⼩数的正实数:^[0-9]+(.[0-9]{2})?$10. 有1~3位⼩数的正实数:^[0-9]+(.[0-9]{1,3})?$11. ⾮零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$12. ⾮零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$13. ⾮负整数:^\d+$ 或 ^[1-9]\d*|0$14. ⾮正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$15. ⾮负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$16. ⾮正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$17. 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$18. 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$19. 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$⼆、校验字符的表达式1. 汉字:^[\u4e00-\u9fa5]{0,}$2. 英⽂和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$3. 长度为3-20的所有字符:^.{3,20}$4. 由26个英⽂字母组成的字符串:^[A-Za-z]+$5. 由26个⼤写英⽂字母组成的字符串:^[A-Z]+$6. 由26个⼩写英⽂字母组成的字符串:^[a-z]+$7. 由数字和26个英⽂字母组成的字符串:^[A-Za-z0-9]+$8. 由数字、26个英⽂字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$9. 中⽂、英⽂、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$10. 中⽂、英⽂、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$11. 可以输⼊含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+ 12 禁⽌输⼊含有~的字符:[^~\x22]+三、特殊需求表达式1. Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?3. InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$4. ⼿机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$5. 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$6. 国内电话号码(0511-*******、021-********):\d{3}-\d{8}|\d{4}-\d{7}7. ⾝份证号(15位、18位数字):^\d{15}|\d{18}$8. 短⾝份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$11. 强密码(必须包含⼤⼩写字母和数字的组合,不能使⽤特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$12. ⽇期格式:^\d{4}-\d{1,2}-\d{1,2}13. ⼀年的12个⽉(01~09和1~12):^(0?[1-9]|1[0-2])$14. ⼀个⽉的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$15. 钱的输⼊格式:16. 1.有四种钱的表⽰形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$17. 2.这表⽰任意⼀个不以0开头的数字,但是,这也意味着⼀个字符"0"不通过,所以我们采⽤下⾯的形式:^(0|[1-9][0-9]*)$18. 3.⼀个0或者⼀个不以0开头的数字.我们还可以允许开头有⼀个负号:^(0|-?[1-9][0-9]*)$19. 4.这表⽰⼀个0或者⼀个可能为负的开头不为0的数字.让⽤户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下⾯我们要加的是说明可能的⼩数部分:^[0-9]+(.[0-9]+)?$20. 5.必须说明的是,⼩数点后⾯⾄少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$21. 6.这样我们规定⼩数点后⾯必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$22. 7.这样就允许⽤户只写⼀位⼩数.下⾯我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$23 8.1到3个数字,后⾯跟着任意个逗号+3个数字,逗号成为可选,⽽不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$24. 备注:这就是最终结果了,别忘了"+"可以⽤"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在⽤函数时去掉去掉那个反斜杠,⼀般的错误都在这⾥25. xml⽂件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$26. 中⽂字符的正则表达式:[\u4e00-\u9fa5]27. 双字节字符:[^\x00-\xff] (包括汉字在内,可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1))28. 空⽩⾏的正则表达式:\n\s*\r (可以⽤来删除空⽩⾏)29. HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (⽹上流传的版本太糟糕,上⾯这个也仅仅能部分,对于复杂的嵌套标记依旧⽆能为⼒)30. ⾸尾空⽩字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式)31. 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)32. 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)33. IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有⽤)34. IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))原⽂:/zxin/archive/2013/01/26/2877765.html。
正则表达式
IP 地址:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
HTML 标签:/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
评注:表单验证时很实用
匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国大陆邮政编码:[1-9]\d{5}(?!\d)
中国大陆固定电话号码 (\d{4}-|\d{3}-)?(\d{8}|\d{7})
中国大陆手机号码 1\d{10}
中国大陆邮政编码 [1-9]\d{5}
中国大陆身份证号(15位或18位) \d{15}(\d\d[0-9xX])?
非负整数(正整数或零) \d+
正整数 [0-9]*[1-9][0-9]*
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
常用正则表达式大全!(例如:匹配中文、匹配html)
常⽤正则表达式⼤全!(例如:匹配中⽂、匹配html)⼀、常见正则表达式 匹配中⽂字符的正则表达式: [u4e00-u9fa5] 评注:匹配中⽂还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1) 匹配空⽩⾏的正则表达式:ns*r 评注:可以⽤来删除空⽩⾏ 匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? /> 评注:⽹上流传的版本太糟糕,上⾯这个也仅仅能匹配部分,对于复杂的嵌套标记依旧⽆能为⼒ 匹配⾸尾空⽩字符的正则表达式:^s*|s*$ 评注:可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 评注:表单验证时很实⽤ 匹配⽹址URL的正则表达式:^(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?$ 评注:⽹上流传的版本功能很有限,上⾯这个基本可以满⾜需求匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实⽤ 匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 评注:匹配形式如 0511-******* 或 021-******** 匹配腾讯QQ号:[1-9][0-9]{4,} 评注:腾讯QQ号从10000开始 匹配中国邮政编码:[1-9]d{5}(?!d) 评注:中国邮政编码为6位数字 匹配⾝份证:d{15}|d{18} 评注:中国的⾝份证为15位或18位 匹配ip地址:d+.d+.d+.d+ 评注:提取ip地址时有⽤ 匹配特定数字: ^[1-9]d*$ //匹配正整数 ^-[1-9]d*$ //匹配负整数 ^-?[1-9]d*$ //匹配整数 ^[1-9]d*|0$ //匹配⾮负整数(正整数 + 0) ^-[1-9]d*|0$ //匹配⾮正整数(负整数 + 0) ^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数 ^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配⾮负浮点数(正浮点数 + 0) ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配⾮正浮点数(负浮点数 + 0) 评注:处理⼤量数据时有⽤,具体应⽤时注意修正 匹配特定字符串: ^[A-Za-z]+$ //匹配由26个英⽂字母组成的字符串 ^[A-Z]+$ //匹配由26个英⽂字母的⼤写组成的字符串 ^[a-z]+$ //匹配由26个英⽂字母的⼩写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英⽂字母组成的字符串 ^w+$ //匹配由数字、26个英⽂字母或者下划线组成的字符串 在使⽤RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下: 只能输⼊数字:“^[0-9]*$” 只能输⼊n位的数字:“^d{n}$” 只能输⼊⾄少n位数字:“^d{n,}$” 只能输⼊m-n位的数字:“^d{m,n}$” 只能输⼊零和⾮零开头的数字:“^(0|[1-9][0-9]*)$” 只能输⼊有两位⼩数的正实数:“^[0-9]+(.[0-9]{2})?$” 只能输⼊有1-3位⼩数的正实数:“^[0-9]+(.[0-9]{1,3})?$” 只能输⼊⾮零的正整数:“^+?[1-9][0-9]*$” 只能输⼊⾮零的负整数:“^-[1-9][0-9]*$” 只能输⼊长度为3的字符:“^.{3}$” 只能输⼊由26个英⽂字母组成的字符串:“^[A-Za-z]+$” 只能输⼊由26个⼤写英⽂字母组成的字符串:“^[A-Z]+$” 只能输⼊由26个⼩写英⽂字母组成的字符串:“^[a-z]+$” 只能输⼊由数字和26个英⽂字母组成的字符串:“^[A-Za-z0-9]+$” 只能输⼊由数字、26个英⽂字母或者下划线组成的字符串:“^w+$” 验证⽤户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
正则表达式30分钟入门教程——堪称网上能找到的最好的正则式入门教程
正则表达式30分钟⼊门教程——堪称⽹上能找到的最好的正则式⼊门教程本教程堪称⽹上能找到的最好正则表达式⼊门教程本⽂⽬标30分钟内让你明⽩正则表达式是什么,并对它有⼀些基本的了解,让你可以在⾃⼰的程序或⽹页⾥使⽤它。
如何使⽤本教程最重要的是——请给我30分钟,如果你没有使⽤正则表达式的经验,请不要试图在30秒内⼊门——除⾮你是超⼈ :)别被下⾯那些复杂的表达式吓倒,只要跟着我⼀步⼀步来,你会发现正则表达式其实并没有想像中的那么困难。
当然,如果你看完了这篇教程之后,发现⾃⼰明⽩了很多,却⼜⼏乎什么都记不得,那也是很正常的——我认为,没接触过正则表达式的⼈在看完这篇教程后,能把提到过的语法记住80%以上的可能性为零。
这⾥只是让你明⽩基本的原理,以后你还需要多练习,多使⽤,才能熟练掌握正则表达式。
除了作为⼊门教程之外,本⽂还试图成为可以在⽇常⼯作中使⽤的正则表达式语法参考⼿册。
就作者本⼈的经历来说,这个⽬标还是完成得不错的——你看,我⾃⼰也没能把所有的东西记下来,不是吗?⽂本格式约定:专业术语元字符/语法格式正则表达式正则表达式中的⼀部分(⽤于分析) 对其进⾏匹配的源字符串对正则表达式或其中⼀部分的说明本⽂右边有⼀些注释,主要是⽤来提供⼀些相关信息,或者给没有程序员背景的读者解释⼀些基本概念,通常可以忽略。
正则表达式到底是什么东西?字符是计算机软件处理⽂字时最基本的单位,可能是字母,数字,标点符号,空格,换⾏符,汉字等等。
字符串是0个或更多个字符的序列。
⽂本也就是⽂字,字符串。
说某个字符串匹配某个正则表达式,通常是指这个字符串⾥有⼀部分(或⼏部分分别)能满⾜表达式给出的条件。
在编写处理字符串的程序或⽹页时,经常会有查找符合某些复杂规则的字符串的需要。
正则表达式就是⽤于描述这些规则的⼯具。
换句话说,正则表达式就是记录⽂本规则的代码。
很可能你使⽤过Windows/Dos下⽤于⽂件查找的通配符(wildcard),也就是*和?。
易语言正则表达式简明教程
正则表达式(regular expression)前言正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。
只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。
索引1._引子2._正则表达式的历史3._正则表达式定义3.1_普通字符3.2_非打印字符3.3_特殊字符3.4_限定符3.5_定位符3.6_选择3.7_后向引用4._各种操作符的运算优先级5._全部符号解释6._部分例子7._正则表达式匹配规则7.1_基本模式匹配7.2_字符簇7.3_确定重复出现--------------------------------------------------------------------------------1. 引子目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP 等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。
正则表达式的使用,可以通过简单的办法来实现强大的功能。
为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。
例子: ^.+@.+\\..+$这样的代码曾经多次把我自己给吓退过。
可能很多人也是被这样的代码给吓跑的吧。
继续阅读本文将让你也可以自由应用这样的代码。
注意:这里的第7部分跟前面的内容看起来似乎有些重复,目的是把前面表格里的部分重新描述了一次,目的是让这些内容更容易理解。
2. 正则表达式的历史正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。
Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。
1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。
js常用的正则表达式
js常用的正则表达式前言JavaScript中的正则表达式被广泛用于字符串的匹配和替换,可以让代码更加优雅和高效。
本文将介绍JS中常用的正则表达式及其用法,希望能对初学者有所帮助。
一、基本语法正则表达式由字面值和特殊字符两种类型组成。
字母、数字、空格等都表示字面值,而特殊符号则表示特定含义,例如/d代表数字,/s代表空格等。
正则表达式用斜杠“/”将其包裹起来。
二、常用正则表达式1. 匹配IP地址/^(\d{1,3}\.){3}\d{1,3}$/使用说明: \d表明是数字,{1,3}表明可以是一个到三个数字,\.表示点,^表示字符串开始,$表示字符串结束。
2. 匹配邮箱/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/使用说明: \w表示字母数字下划线,[-+.]表示这些特殊字符中的一个,*表示出现零次或多次。
3. 匹配电话号码/^[1][3,4,5,7,8][0-9]{9}$/使用说明: [1]表示以1开头,[3,4,5,7,8]表示第二个数字只能是这些中的一个,[0-9]{9}表示后面必须跟九个数字。
4. 匹配URL地址/^(http|https):\/\/[a-zA-Z0-9]+[\.a-zA-Z0-9_-]*[a-zA-Z0-9]+(\/\S*)?$/使用说明: (http|https)表示http或https,\/\/表示两个斜杠,[a-zA-Z0-9]表示字母数字任意一个,+表示一个或多个,[\.a-zA-Z0-9_-]*表示出现零次或多次,\/表示斜杠,\S表示任意一个非空白字符。
5. 匹配HTML标签/<\/?[^>]+>/gi使用说明: \?表示出现零次或一次,[^>]表示不是大于号的字符,+表示一个或多个,/i使匹配忽略大小写,/g表示全局匹配。
6. 匹配中文字符/[\u4e00-\u9fa5]/使用说明: [\u4e00-\u9fa5]表示从\u4e00到\u9fa5这个区间的所有字符。
正则表达式书
正则表达式书
如果您想学习正则表达式,以下是一些推荐的正则表达式书籍:
1. 《精通正则表达式》(作者:弗瑞德):这本书是正则表达式领域的经典之作,深入浅出地介绍了正则表达式的概念、语法和用法,并提供了大量的示例和练习题,是学习正则表达式的必备书籍。
2. 《正则表达式必知必会》(作者:立山):这本书是一本比较薄的正则表达式入门书籍,适合初学者使用。
它介绍了正则表达式的基本概念和语法,并通过实例演示了如何使用正则表达式进行文本处理和模式匹配。
3. 《Regex Recipes for Java》(作者:麦卡费尔特):这本书是一本专门针对Java的正则表达式教程,介绍了Java中正则表达式的用法和技巧。
它通过丰富的示例和练习题,帮助读者深入了解正则表达式的应用。
这些书籍都是学习正则表达式的经典之作,其中包含了丰富的示例和练习题,可以帮助您深入了解正则表达式的概念、语法和用法,提高您的编程技能。
正则表达式实用语法大全
正则表达式实用语法大全正则表达式是一种强大的文本匹配和处理工具,它可以用来在字符串中查找、替换和提取特定的模式。
下面是一些常用的正则表达式实用语法:1. 字符匹配。
\d: 匹配数字。
\w: 匹配字母、数字、下划线。
\s: 匹配空白字符。
. : 匹配任意字符。
2. 重复匹配。
: 匹配前面的元素零次或多次。
+ : 匹配前面的元素一次或多次。
: 匹配前面的元素零次或一次。
{n} : 匹配前面的元素恰好n次。
{n,} : 匹配前面的元素至少n次。
{n,m} : 匹配前面的元素至少n次,至多m次。
3. 边界匹配。
^ : 匹配字符串的开头。
$ : 匹配字符串的结尾。
\b : 匹配单词的边界。
4. 分支条件。
| : 匹配多个表达式中的一个。
5. 分组。
( ) : 将表达式分组。
(?: ) : 只匹配不捕获分组。
(?<name> ) : 命名捕获分组。
6. 贪婪与非贪婪。
: 匹配前面的元素零次或多次,尽量少匹配。
+? : 匹配前面的元素一次或多次,尽量少匹配。
: 匹配前面的元素零次或一次,尽量少匹配。
{n,m}? : 匹配前面的元素至少n次,至多m次,尽量少匹配。
7. 反义。
\D : 匹配非数字。
\W : 匹配非字母、数字、下划线。
\S : 匹配非空白字符。
8. 转义字符。
\ : 转义特殊字符。
以上是一些常用的正则表达式实用语法,通过灵活运用这些语法,可以实现对文本的高效处理和匹配。
希望这些内容对你有所帮助。
正则表达式-语法大全
正则表达式-语法⼤全1. 正则表达式规则1.1 普通字符字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。
表达式中的普通字符,在匹配⼀个字符串的时候,匹配与之相同的⼀个字符。
,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。
(注:下标从0开始还是从1开始,因当前编程语⾔的不同⽽可能不同),匹配结果是:成功;匹配到的内容是:"bcd";匹配到的位置是:开始于1,结束于4。
1.2 简单的转义字符⼀些不便书写的字符,采⽤在前⾯加 "/" 的⽅法。
这些字符其实我们都已经熟知了。
表达式可匹配/r, /n代表回车和换⾏符/t制表符//代表 "/" 本⾝还有其他⼀些在后边章节中有特殊⽤处的标点符号,在前⾯加 "/" 后,就代表该符号本⾝。
⽐如:^, $ 都有特殊意义,如果要想匹配字符串中 "^" 和 "$" 字符,则表达式就需要写成 "/^" 和 "/$"。
表达式可匹配/^匹配 ^ 符号本⾝/$匹配 $ 符号本⾝/.匹配⼩数点(.)本⾝这些转义字符的匹配⽅法与 "普通字符" 是类似的。
也是匹配与之相同的⼀个字符。
,匹配结果是:成功;匹配到的内容是:"$d";匹配到的位置是:开始于3,结束于5。
1.3 能够与 '多种字符' 匹配的表达式正则表达式中的⼀些表⽰⽅法,可以匹配 '多种字符' 其中的任意⼀个字符。
⽐如,表达式 "/d" 可以匹配任意⼀个数字。
虽然可以匹配其中任意字符,但是只能是⼀个,不是多个。
这就好⽐玩扑克牌时候,⼤⼩王可以代替任意⼀张牌,但是只能代替⼀张牌。
正则表达式入门教程
正则表达式入门教程以下内容经正则表达式学习网授权≈正则表达式是什么?≈在使用电脑进行各种文字处理的时候,我们有时需要查找和匹配一些特殊的字符串,如邮箱地址、验证用户输入的密码是否包含了大小写字母和数字,查找HTML源文档中的所有web地址等等,这时我们就可以使用到正则表达式。
正则表达式本身是一个“字符串”,通过这个“字符串”去描述字符组成规则。
如abbb、abbbb、abbbbb这三个字符串包都是以a字母开头a后面有一个b字母,而且b字母重复了3到5次。
用正则表达式来描述就是ab{3,5},b{3,5}表示b字符重复3到5次。
如果我们想匹配ababab这样的字符串,ab重复了3次,用正则表达式表示就是(ab){3},圆括号()是正则表达式中的分组。
大家如果想亲自感受正则表达式的使用效果,可以打开正则表达式测试系统。
如以上实例所展示的,正则表达式为人们提供了一种简单易用的字符处理工具。
它在目前主流的文字处理软件中都提供了良好的支持(不仅是编程软件,还有文字处理软件Uedit32、EditPlus,网页采集软件火车头等等),它具有很强的通用性,学好它,我们可以达一变应万变的效果。
≈正则表达式详解≈像{},()这种在正则表达式中,具有特殊含义的字符称为元字符(metacharacter)。
元字符是组成正则表达式的基本元素,在正则表达式经常使用的元字符不是很多,概念容易理解。
大家只要花30来分钟学完我们的教程基本上就可以完全掌握。
为了您能更快速的掌握正则表达式,我们为您推荐一款方便的正则表达式在线测试工具“RegExr”,(RegExr由免费提供)。
保留字符匹配字符本身匹配字符数量匹配字符位置分组匹配表达式选项保留字符(返回目录)在正则表达式中,有一些字符在正则表达式中具有特殊含义被称保留字符,如*表示前一个元素可以重复零次或多次,要匹配“*”字符本身使用\*,半角句号.匹配除了换行符外的所有字符,要匹配“.”使用\.。
20个常用的正则表达式 单字母
正则表达式(Regular Expression)是一种用于匹配字符串的强大工具。
它通过使用特定的符号和字符来描述和匹配一系列字符串,能够满足我们在处理文本时的各种需求。
在这篇文章中,我们将深入探讨20个常用的单字母正则表达式,并通过实例来展示它们的使用方法。
1. \b在正则表达式中,\b表示单词的边界。
它可以用来匹配单词的开头或结尾,用于查找特定单词而不是单词的一部分。
2. \d\d表示任意一个数字字符。
它可以用来匹配任何数字,例如\d+可以匹配一个或多个数字字符。
3. \w\w表示任意一个字母、数字或下划线字符。
它可以用来匹配单词字符,例如\w+可以匹配一个或多个单词字符。
4. \s\s表示任意一个空白字符,包括空格、制表符、换行符等。
它可以用来匹配空白字符,例如\s+可以匹配一个或多个空白字符。
5. \.\.表示匹配任意一个字符,包括标点符号和空格等。
它可以用来匹配任意字符,例如\.可以匹配任意一个字符。
6. \A\A表示匹配字符串的开始。
它可以用来确保匹配发生在字符串的开头。
7. \Z\Z表示匹配字符串的结束。
它可以用来确保匹配发生在字符串的结尾。
8. \b\b表示单词的边界。
它可以用来匹配单词的开头或结尾,用于查找特定单词而不是单词的一部分。
9. \D\D表示任意一个非数字字符。
它可以用来匹配任何非数字字符。
10. \W\W表示任意一个非单词字符。
它可以用来匹配任何非单词字符。
11. \S\S表示任意一个非空白字符。
它可以用来匹配任何非空白字符。
12. \[\[表示匹配方括号。
它可以用来匹配包含在方括号内的字符。
13. \]\]表示匹配方括号。
它可以用来匹配包含在方括号内的字符。
14. \(\(表示匹配左括号。
它可以用来匹配包含在左括号内的字符。
15. \)\)表示匹配右括号。
它可以用来匹配包含在右括号内的字符。
16. \{\{表示匹配左花括号。
它可以用来匹配包含在左花括号内的字符。
17. \}\}表示匹配右花括号。
正则表达式实用语法大全
正则表达式基本符号:^ 表示匹配字符串的开始位置 (例外用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)$ 表示匹配字符串的结束位置* 表示匹配零次到多次+ 表示匹配一次到多次 (至少有一次)表示匹配零次或一次. 表示匹配单个字符| 表示为或者,两项中取一项( ) 小括号表示匹配括号中全部字符[ ] 中括号表示匹配括号中一个字符范围描述如[0-9 a-z A-Z]{ } 大括号用于限定匹配次数如 {n}表示匹配n个字符 {n,}表示至少匹配n个字符{n,m}表示至少n,最多m\ 转义字符如上基本符号匹配都需要转义字符如 \* 表示匹配*号\w 表示英文字母和数字 \W 非字母和数字\d 表示数字 \D 非数字常用的正则表达式匹配中文字符的正则表达式: [\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]匹配空行的正则表达式:\n[\s| ]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/匹配首尾空格的正则表达式:(^\s*)|(\s*$)匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?sql语句:^(select|drop|delete|create|update|insert).*$1、非负整数:^\d+$2、正整数:^[0-9]*[1-9][0-9]*$3、非正整数:^((-\d+)|(0+))$4、负整数:^-[0-9]*[1-9][0-9]*$5、整数:^-?\d+$6、非负浮点数:^\d+(\.\d+)?$7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$9、负浮点数:^(-((正浮点数正则式)))$10、英文字符串:^[A-Za-z]+$11、英文大写串:^[A-Z]+$12、英文小写串:^[a-z]+$13、英文字符数字串:^[A-Za-z0-9]+$14、英数字加下划线串:^\w+$15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$17、邮政编码:^[1-9]\d{5}$18、中文:^[\u0391-\uFFE5]+$19、电话号码:^((\d2,3)|(\d{3}\-))?(0\d2,3|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$20、手机号码:^((\d2,3)|(\d{3}\-))?13\d{9}$21、双字节字符(包括汉字在内):^\x00-\xff22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数)23、匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/>24、匹配空行:\n[\s| ]*\r25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *=*('|")?(\w|\\|\/|\.)+('|"| *|>)?26、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)29、提取信息中的中国手机号码:(86)*0*13\d{9}30、提取信息中的中国固定电话号码:(\d3,4|\d{3,4}-|\s)?\d{8}31、提取信息中的中国电话号码(包括移动和固定电话):(\d3,4|\d{3,4}-|\s)?\d{7,14}32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+34、提取信息中的任意数字:(-?\d*)(\.\d+)?35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)36、电话区号:/^0\d{2,3}$/37、腾讯QQ号:^[1-9]*[1-9][0-9]*$38、帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$39、中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$。
VBA中的正则表达式入门指南
VBA中的正则表达式入门指南正则表达式是一种强大而灵活的文本匹配工具,在VBA编程中被广泛应用。
通过使用正则表达式,我们可以轻松地处理和转换文本数据。
本文将为您提供一个入门指南,介绍VBA中正则表达式的基本概念、语法和常见应用。
一、正则表达式的基本概念正则表达式是一种模式匹配工具,可用于在文本中查找特定模式的字符串。
它由一系列字符和特殊符号组成,这些字符和符号表示匹配规则。
在VBA中,我们使用VBScript的正则表达式对象来处理正则表达式。
在正则表达式中,常用的特殊符号包括:1. 普通字符:匹配其字面值,例如字母、数字或特殊字符。
2. 元字符:具有特殊含义的字符,例如"."表示任何字符,"*"表示前一元素的零个或多个实例。
3. 字符类:用方括号括起来的一组字符,表示匹配其中的任意一个字符。
例如,"[abc]"表示匹配字符"a"、"b"或"c"其中之一。
4. 转义字符:用反斜杠“\”前缀的特殊字符,用于匹配原有特殊字符的字面值。
例如,"\."匹配句号。
二、VBA中使用正则表达式对象在VBA中,我们可以通过创建VBScript.RegExp对象来使用正则表达式。
以下是创建和使用正则表达式对象的基本步骤:1. 引用VBScript库:在VBA编辑器中,选择“工具”->“引用”,然后勾选“Microsoft VBScript Regular Expressions x.x”(版本可能因安装环境而异)。
2. 创建正则表达式对象:使用“Dim”语句创建一个VBScript.RegExp对象。
例如:```Dim regEx As VBScript.RegExpSet regEx = New VBScript.RegExp```3. 设置正则表达式模式:使用“Pattern”属性设置正则表达式的模式。
Sigil正则表达式入门
实用标准文档Sigil 正则表达式入门 正则表达式,是一种用特殊符号表示文字的方法,主要用在查找和替换方面。
下面的例子可以让你知道正则表达式是干什么用的。
在一个文本中,有这样的一些内容:序章 第一章 ABCDEF 第二章 GHIJKL 第三章 ………… 终章这种内容我们都很熟悉,你有没有想过,用什么办法可以把这些内容一次过 查找出来呢?为了简化,我们先来看这个部分。
第一章 第二章 第三章可以看到,这些内容有着极高的相似性,由“第”,“章”开头和结尾,中 间有着一些数字。
如果我们能用一个什么符号来代表中间的所有字,比如一个圆 点“.”,不就可以用这样的方式来查找出所有这样的内容了吗。
第.章很早之前,就有人发明了一套完整的方案,让我们可以用各种不同的符号来 达到这种目的,那就是我们将要了解的正则表达式。
正则表达式作为一种描述字符的方案,在大量软件、编程语言中都有所运用, 而在这些不同的平台上,正则表达式的使用方式又往往会有或多或少的差异,在 某个平台上管用的表达式,换个地方可能就要改改才能正确运行。
那么在这篇文 章里,我们主要是讲 Sigil 中的正则表达式,至于推广应用,就要靠大家去查找 资料了。
1. 元字符我们前面提到,正则表达式一个重要作用就是用特别的符号来代表一类字符, 而这些符号就叫做“元字符”。
这些元字符在大多数环境下都是通用的。
注意,元字符中所有符号都是半角符号,也就是通常说的英文符号。
文案大全实用标准文档以下是一些常见的元字符,实际上还有更多。
这些元字符都经过测试,在 Sigil 下有效。
符号 意义 说明任意.一个最简单的元字符,匹配任意字符,但不包括换行符“\n”。
字符把元字符改变为普通字符,或者把某些普通字符转变为元\转义 字符。
比如,“\.”就是代表普通的点号,不代表其他字符。
半角空格、制表符等空白字符。
在 Sigil 中还能匹配到换\s空白 字符行符“\n”和空白行,使用要注意。
Sigil正则表达式入门
Sigil正则表达式入门正则表达式,是一种用特殊符号表示文字的方法,主要用在查找和替换方面。
下面的例子可以让你知道正则表达式是干什么用的。
在一个文本中,有这样的一些容:这种容我们都很熟悉,你有没有想过,用什么办法可以把这些容一次过查找出来呢?为了简化,我们先来看这个部分。
可以看到,这些容有着极高的相似性,由“第”,“章”开头和结尾,中间有着一些数字。
如果我们能用一个什么符号来代表中间的所有字,比如一个圆点“.”,不就可以用这样的方式来查找出所有这样的容了吗。
很早之前,就有人发明了一套完整的方案,让我们可以用各种不同的符号来达到这种目的,那就是我们将要了解的正则表达式。
正则表达式作为一种描述字符的方案,在大量软件、编程语言中都有所运用,而在这些不同的平台上,正则表达式的使用方式又往往会有或多或少的差异,在某个平台上管用的表达式,换个地方可能就要改改才能正确运行。
那么在这篇文章里,我们主要是讲Sigil中的正则表达式,至于推广应用,就要靠大家去查找资料了。
1. 元字符我们前面提到,正则表达式一个重要作用就是用特别的符号来代表一类字符,而这些符号就叫做“元字符”。
这些元字符在大多数环境下都是通用的。
注意,元字符中所有符号都是半角符号,也就是通常说的英文符号。
以下是一些常见的元字符,实际上还有更多。
这些元字符都经过测试,在2. 常用正则表达式在这一部分,我们回来看一些很常用的正则表达式,这些表达式往往是更复杂表达式的组成部分。
2.1 所有字符匹配所有容。
“.”代表一个字符,“*”代表任意多个,因此“.*”代表“所有字符”。
比如表示<div>标签的所有容,可以依次匹配到下列各项但不能跨行,这样是匹配不到的。
如果要跨行,需要使用“(?s)”。
2.2 空白行匹配空白行的典型写法。
可以匹配无容的行,只有空格的行,只有制表符的行或者空格和制表符混合排列的行。
[]中包括的分别是空格“ ”,制表符“\t”和全角空格“”。
正则表达式入门(ed模糊匹配)
正则表达式⼊门(ed模糊匹配)元字符:/b 代表着单词的开头或结尾,也就是单词的分界处.如果要精确地查找hi这个单词的话,我们应该使⽤/bhi/b..是另⼀个元字符,匹配除了换⾏符以外的任意字符,*同样是元字符,它指定*前边的内容可以重复任意次以使整个表达式得到匹配。
.*连在⼀起就意味着任意数量的不包含换⾏的字符。
/d是⼀个新的元字符,匹配任意的数字,0/d/d-/d/d/d/d/d/d/d/d也就是中国的电话号码.为了避免那么多烦⼈的重复,我们也可以这样写这个表达式:0/d{2}-/d{8}。
/s匹配任意的空⽩符,包括空格,制表符(Tab),换⾏符,中⽂全⾓空格等。
/w匹配字母或数字或下划线或汉字。
/b/w{6}/b 匹配刚好6个字母/数字的单词。
字符转义:使⽤/来取消这些字符的特殊意义。
因此,你应该使⽤/.和/*。
当然,要查找/本⾝,你也得⽤//。
代码说明. 匹配除换⾏符以外的任意字符/w 匹配字母或数字或下划线或汉字/s 匹配任意的空⽩符/d 匹配数字/b 匹配单词的开始或结束^ 匹配字符串的开始$ 匹配字符串的结束重复:常⽤的限定符代码/语法说明* 重复零次或更多次+ 重复⼀次或更多次重复零次或⼀次{n} 重复n次{n,} 重复n次或更多次{n,m} 重复n到m次要想查找数字,字母或数字,你只需要在中括号⾥列出它们就⾏了,像[aeiou]就匹配任何⼀个元⾳字母,[.?!]匹配标点符号(.或?或!)反义:常⽤的反义代码代码/语法说明/W 匹配任意不是字母,数字,下划线,汉字的字符/S 匹配任意不是空⽩符的字符/D 匹配任意⾮数字的字符/B 匹配不是单词开头或结束的位置[^x] 匹配除了x以外的任意字符[^aeiou] 匹配除了aeiou这⼏个字母以外的任意字符替换:正则表达式⾥的替换指的是有⼏种规则,如果满⾜其中任意⼀种规则都应该当成匹配,具体⽅法是⽤|把不同的规则分隔开。
0/d{2}-/d{8}|0/d{3}-/d{7}这个表达式能匹配两种以连字号分隔的电话号码:⼀种是三位区号,8位本地号(如010-********),⼀种是4位区号,7位本地号(0376-*******)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(?<!Expression) 逆序否定环视表示所在位置左侧不能匹配Expression
(?=Expression) 顺序肯定环视表示所在位置右侧能够匹配Expression
(?!Expression) 顺序否定环视表示所在位置右侧不能匹配Expression
表达式 介绍说明
(Expression) 普通捕获组将子表达式Expression匹配内容保存到以数字编号组里
(?<name> Expression) 命名捕获组将子表达式Expression匹配内容保存到以name命名组里
普通捕获组(在不产生歧义情况下简称捕获组)是以数字进行编号编号规则是以“(”从左到右出现顺序从1开始
当然如果想要深入了解正则表达式这些细节又是必须被关注这是后话让我们先从正则基础开始进入正则表达式 世界
2 正则表达式基础2.1 基本概念2.1.1 串组成
对于串“a5”是由两个“a”、“5”以及 3个位置组成这点对于正则表达式匹配原理理解很重要
2.1.2 占有和零宽度正则表达式匹配过程中如果子表达式匹子表达式匹配仅仅是位置或者匹配内容并不保存到最终匹配结果中那么就 认为这个子表达式是零宽度
表达式 介绍说明
(?:Expression) 进行子表达式Expression匹配并将匹配内容保存到最终整个表达式区配结果中但Expression匹配内容不单独 保存到个组内
3.3 反向引用捕获组匹配内容可以在正则表达式外部中进行引用也可以在表达式中进行引用表达式中引用方 式就是反向引用 反向引用通常用来查找重复子串或是限定某子串成对出现
介绍说明
^ 匹配串开始位置不匹配任何
$ 匹配串结束位置不匹配任何
\b 匹配单词边界不匹配任何
举例: “^a”在匹配“cba”时匹配失败表达式要求开始位置后面是“a”而“cba”显然是不满足 “\d$”在匹配“123”时匹配成功匹配结果为“3”这个表达式要求匹配结尾处数字如果结尾处不是数字如 “123abc”则是匹配失败 2.2.5 转义些不可见或是在正则中具有特殊意义元如想匹配本身需要用“\”对其进行转义
举例: 源串:<div>aaa</div><div>bbb</div> 正则表达式1:<div>.*</div> 匹配结果:<div>aaa</div><div>bbb</div> 正则表达式2:<div>.*?</div> 匹配结果:<div>aaa</div>
2009-9-7 0:38:14 疯狂代码 /
正如自然语言中“高大”、“坚固”等词语抽象出来描述事物特征样正则表达式就是高度抽象用来描述串特征
正则表达式(以下简称正则Regex)通常不独立存在各种编程语言和工具作为宿主语言提供对正则支持并根据自 身语言特点进行定剪裁或扩展
正则入门很容易有限语法规则很容易掌握但是目前正则普及率并不高主要是正则流派众多各种宿主语言提供文 档都过多关注于自身些细节而这些细节通常是初学者并不需要关注
表达式 介绍说明
\1\2 对序号为1和2捕获组反向引用 \k<name> 对命名为name捕获组反向引用
举例: “(a|b)\1”在匹配“abaa”时匹配成功匹配到结果是“aa”“(a|b)”在尝试匹配时虽然既可以匹配“a”也可 以匹配“b”但是在进行反向引用时对应中匹配内容已经是固定了 3.4 环视(Look Around)环视只进行子表达式匹配匹配内容不计入最终匹配结果是零宽度 环视按照方向划分有顺序和逆序两种按照是否匹配有肯定和否定两种组合起来就有 4种环视环视相当于对所在 位置加了个附加条件
举例: “\w\s\d”在匹配“Windows 2003”时匹配成功匹配结果为“s 2” 2.2.3 . 小数点小数点可以匹配除“\n”以外任意个如果要匹配包括“\n”在内所有般用[\s\S]或者是用“.”加 (?s)匹配模式来实现
表达式 介绍说明 . 匹配除了换行符 \n 以外任意个
2.2.4 其它元 表达式
表达式 介绍说明
| 多个子表达式的间取“或”关系
举例: “^aa|b$”在匹配“cccb”时是可以匹配成功匹配结果是“b”这个表达式表示匹配“^aa”或“b$”而 “b$”在匹配“cccb ”时是可以匹配成功 “^(aa|b)$”在区配“cccb”时是匹配失败这个表达式表示在“开始”和“结束”位置的间只能是“aa”或 “b”而“cccb”显然是不满足 3 正则表达式进阶3.1 捕获组(Capture Group)捕获组就是把正则表达式中子表达式匹配内容保存到内存 中以数字编号或手动命名组里以供后面引用
占有还是零宽度是针对匹配内容是否保存到最终匹配结果中而言
占有是互斥零宽度是非互斥也就是个同时间只能由个子表达式匹配而个位置却可以同时由多个零宽度子表达式 匹配
2.1.3 正则表达式构成正则表达式由两种构成种是在正则表达式中具体特殊意义“元”另种是普通“文本”
元可以是个如“^”也可以是个序列如“\w”
表达式 介绍说明 \r\n 回车和换行 \\ 匹配“\”本身 \^\$\. 分别匹配“^”、“$”和“.”
以下在匹配其本身时通常需要进行转义在实际应用中根据具体情况需要转义可能不止如下所列 . $ ^ { [ ( | ) * + ? \ 2.2.6 量词(Quantier)量词表示个子表达式可以匹配次数量词可以用来修饰个、组或是用括起来子表达式些常用 量词被定义成独立元
表达式 介绍说明
\d 任意个数字相当于[0-9]即0~9 中任意个
\w 任意个字母或数字或下划线相当于[a-zA-Z0-9_]
\s 任意空白相当于[ \r\n\f\t\v]
\D
任意个非数字\d取反相当于[^0-9] \W \w取反相当于[^a-zA-Z0-9_] \S 任意非空白\s取反相当于[^ \r\n\f\t\v]
正则表达式入门:正则表达式 学习参考 推荐
入门者看
疯狂代码 /
ĵ:http://DeveloperUtil/Article69995.html
1 概述正则表达式(Regular Expression)是种匹配模式描述是串文本特征
表达式 介绍说明 举例
{m} 表达式匹配m次 “\d{3}”相当于“\d\d\d ” “(abc){2}”相当于“abcabc”
{m,n} 表达式匹配最少m次最多n次 “\d{2,3}”可以匹配“12”或“321”等2到3位数字
{m,} 表达式至少匹配m次 “[a-z]{8,}”表示至少8位以上字母
表达式 介绍说明 [abc] 表示“a”或“b”或“c” [0-9] 表示0~9中任意个数字等价于[0123456789] [\u4e00-\u9fa5] 表示任意个汉字 [^a1<] 表示除“a”、“1”、“<”外其它任意个 [^a-z] 表示除小写字母外任意个
举例: “[0-9][0-9]”在匹配“Windows 2003”时匹配成功匹配结果为“20” “[^inW]”在匹配“Windows 2003”时匹配成功匹配结果为“d” 2.2.2 常见范围缩写对于些常用范围如数字等由于非常常用即使使用[0-9]这样组仍显得麻烦所以定义了些元来 表示常见范围
进行编号通常情况下编号为0组表示整个表达式匹配内容 命名捕获组可以通过捕获组名而不是序号对捕获内容进行引用提供了更便捷引用方式不用关注捕获组序号也不 用担心表达式部分变更会导致引用捕获组 3.2 非捕获组些表达式中不得不使用( )但又不需要保存( )中子表达式匹配内容这时可以用非捕获组来抵消使 用( )带来副作用
2.2 元(Meta Character)2.2.1 […] 组(Character Classes) 组可以匹配[ ]中包含任意个虽然可以是任意个但 只能是个
组支持由连“-”来表示个范围当“-”前后构成范围时要求前面码位小于后面码位 [^…] 排除型组排除型组表示任意个未列出同样只能是个排除型组同样支持由连“-”来表示个范围
举例: “(?<=Windows )\d+”在匹配“Windows 2003”时匹配成功匹配结果为“2003”我们知道“\d+”表示匹 配个以上数字而“(?<=Windows )”相当于个附加条件表示所在位置左侧必须为“Windows ”它所匹配内容 并不计入匹配结果同样正则在匹配“Office 2003”时匹配失败这里任意串数字子串左侧都不是“Windows ” “(?!1)\d+”在匹配“123”时匹配成功匹配结果为“23”“\d+”匹配个以上数字但是附加条件“(?!1)”要 求所在位置右侧不能是“1”所以匹配成功位置是“2”前面位置 3.5 忽略优先和匹配优先或者叫做正则表达式匹配贪婪和非贪婪模式 标准量词修饰子表达式在可匹配可不匹配情况下总会先尝试进行匹配称这种方式为匹配优先或者贪婪模式此前 介绍些量词“{m}”、“{m,n}”、“{m,}”、“?”、“*”和“+”都是匹配优先 些NFA正则引擎支持忽略优先量词也就是在标准量词后加个“?”此时在可匹配可不匹配情况下总会先忽略匹 配只有在由忽略优先量词修饰子表达式必须进行匹配才能使整个表达式匹配成功时才会进行匹配称这种方式为 忽略优先或者非贪婪模式忽略优先量词包括“{m}?”、“{m,n}?”、“{m,}?”、“??”、“*?”和“+?”
? 表达式匹配0次或1次相当于{0,1} “ab?”可以匹配“a”或“ab”
* 表达式匹配0次或任意多次相当于{0,} “<[^>]*>”中“[^>]*”表示0个或任意多个不是“>”
+ 表达式匹配1次或意多次至少1次相当于{1,} “\d\s+\d”表示两个数字中间至少有个以上空白