正则表达式的总结
Posted latter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式的总结相关的知识,希望对你有一定的参考价值。
缘由:当前写一些SQL和整理数据类的文件,使用到正则表达式,也将之前零散的使用汇总到一起,记录一下~分享一下~
一、热身小案例
需求:将SQL中美化的格式转换为无换行,无空格的
程序中使用正则表达式:`\\\\s+`
编辑器中使用正则表达式:`\\s+`
解释说明:
`\\`:将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\\\n”匹配\\n。“\\n”匹配换行符。序列“\\\\”匹配“\\”而“\\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。(在java或者phython等程序中需要添加,与编译有关)
`\\s`:匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \\f\\n\\r\\t\\v]。
`+`:匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
例图:
二、正则表达式的介绍
开始传统教育思维的步骤哈~,咱们先说概念,啥是正则表达式呢?
+ 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
+ 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
三、使用范围
各种文本编辑器,代码编辑器均可使用
小到著名编辑器EditPlus、notepad++,大到Microsoft Word、Visual Studio、eclipse、IDE等大型编辑器,都可以使用正则表达式来处理文本内容
四、常用的元字符
1、定位符
`^`:标记开始的位置(*特别说明,^在方括号表达式中使用,此时它表示不接受该字符集合,即"非"*)
`$`:标记结束的位置
`\\b`:匹配一个单词边界,也就是指单词和空格间的位置(单词边界不仅指空格)
`\\B`:匹配非单词边界
2、 限定符
`*`:匹配前面的子表达式零次或多次。等价于{0,}
`+`:匹配前面的子表达式一次或多次。等价于{1,}
`?`:匹配前面的子表达式零次或一次。等价于{0,1}
`{n}`:n 是一个非负整数。匹配确定的 n 次。等价于{0,}
`{n,}`:n 是一个非负整数。至少匹配n 次。等价于{1,}
`{n,m}`:m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。等价于{0,1}
3、 表达式
`()`:标记一个子表达式的开始和结束位置
`[`:标记一个中括号表达式的开始[]
`{`:标记限定符表达式的开始{}
4、 贪婪与非贪婪
\\*、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配
实例:“kkss>介绍正则表达式>”
**贪婪**:/k.\\*>/匹配: kkss>介绍正则表达式>
**非贪婪**:/k.\\*?>/匹配:kkss>
5、字符簇
`[a-z]` :匹配所有的小写字母
`[A-Z]` :匹配所有的大写字母
`[a-zA-Z]` :匹配所有的字母
`[0-9]` :匹配所有的数字
`[0-9\\.\\-]` :匹配所有的数字,句号和减号
`[ \\f\\r\\t\\n]` :匹配所有的白字符
`(x|y)` :匹配x或y
5、 其他特殊字符
`\\w` 匹配字母数字及下划线,等价于[a-zA-Z0-9_]
`\\W` 匹配任何非单词字符。等价于 [^A-Za-z0-9_]
`\\s` 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \\f\\n\\r\\t\\v]
`\\S` 匹配任何非空白字符。等价于 [^ \\f\\n\\r\\t\\v]
`\\d` 匹配一个数字字符。等价于 [0-9]
`\\D` 匹配一个非数字字符。等价于 [^0-9]
`.` 匹配除 "\\n" 之外的任何单个字符。要匹配包括 ‘\\n‘ 在内的任何字符,请使用象 ‘[.\\n] ‘ 的模式
6、 正向反向
`(?:pattern).`:匹配 pattern 但不获取匹配结果,非获取匹配。例:industr(?:y|ies) =>‘industry|industries‘ 。
`(?=pattern)`:正向肯定预查,例:Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"。
`(?!pattern)`:正向否定预查,例:Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。
`(?<=pattern)`:反向(look behind)肯定预查,与正向肯定预查类似,只是方向相反.例:"(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",但不能匹配"3.1Windows"中的"Windows"。
`(?< !/pattern)`:反向否定预查,与正向否定预查类似,只是方向相反。例:"(?< !95|98|NT|2000)Windows"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows"。
--未完待续。。。。。。。。。
以上是关于正则表达式的总结的主要内容,如果未能解决你的问题,请参考以下文章