小白的正则入门
概述正则作为一种元语言工具内置在各种编程语言中,特别适合文本处理、数据验证等领域。 认识字符想要自己构造正则解决需求必先学会模仿,而模仿必先认识。 确定正则范围在 / / 之间的是正则表达式,第二个/之后的是模式, 转义因此如果要用 / 你必须转义,我相信你明白转义的意思即 前面加形成表达 /,当然其他你需要表达的元字符都可以用 来转义, so,what is 元字符? 简单理解就是被用做正则表达式语法的字符, 好比html中你要 写 &; 就必须转义,只不过html转义方式是换成[实体字符](http://www.w3school.com.cn/tags/html_ref_symbols.html)罢了。 注意:不代表都是转义字符,诸如n等都是元字符,想要匹配n则要n 模式模式只有3种,可多用 g 表示 global全局 很多文本工具的正则不要求你写后面的模式是因为他们一般直接默认gim 理解什么是全局g不加g 匹配到一个就结束,加g则一直匹配到结尾 正则常用符号分类符号的具体含义不太理解没关系,毕竟我们第一次用,且不需要记住所有符号啊,我们的目标是拿下常用的,多见几次就明白了 Anchor:匹配位置而非字符 ^ 一行或一个串的起始位置 $ 一行或一个串的结束位置 b 匹配一个字边界,即字与空格间的位置。 B 匹配与b相反的位置 Character class:匹配特殊字符集,预定义了一些字符集给你用,你也可以自己构造 . 匹配除了换行符之外的所有字符 s 匹配空白符 S 匹配非空白符 w 相当于匹配[A-Za-z0-9_],即所有大小写字母,数字,underscore(连字符_).//注意不是- W 与w正好相反 d 数字 D 非数字
范围:这个应该隶属匹配字符集的Character class,但感觉分开来讲比较好 [A-Z] 表示A到Z范围内都可以匹配,跟数学中的用法一致 [AZ] 表示A、Z都行 [^AZ] 表示既不是A也不是Z //这是^的第二种用法了,不过别担心,表示反义它必须在[]里 Escaped(转义): 简单理解就是被用做正则表达式语法的字符需要转义,但个人感觉跟多靠积累 先看看菜鸟正则语法非打印字符那部分 记得js中的uxxxx这种形式吧,这是转义某种unicode字符,具体什么字符要查表, 另外还有 00这种以八进制开头的与xFF这种16进制的都可以表示同样的东西, 这三者能够表示所有实体符号,且能互换使用。 cx 匹配由x指明的控制字符,x必须[A-Za-z] 比如 cI 表示tab,等价t cM 表示回车,等价r cJ 表示换行,等价n 不得不跳出来说说win与linux环境下的行尾了,CRLF即rn是在win下,而linux是LF。这也是为什么linux下写代码复制到win下换行都不见了的原因。 group and lookaround这部分比较难, Groups allow you to combine a sequence of tokens to operate on them together. Capture groups can be referenced by a backreference and accessed separately in the results. 请再去菜鸟语法看看试着理解上面那段鸟语的意思。 (ABC) 形成一个子串再进行运算 1 反向引用 剩下感觉用处不大 反向引用用法Example 正则: (w)a1 源: hah dad bad dab gag gab 结果: hah dad gag 解释: 这个串匹配三个字符,第一个w的意思看上面,a就是字母a,1表示引用第一个匹配到子串;所以最终应该是 BAB这种形式,或者 abcacb这种则会把cac标红. 重复/限定符
正则运算符优先级认识完符号和一些基本的注意点(转义、反向引用、范围、从左到右解读)后,看看
资源安利
未完待续.... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |