正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本
能够与多种字符匹配的表达式,要区分大小写,大写代表取反
字符集合描述\d表示任意一个数字 0-9 【\D 代表除了0-9的其他字符】\w表示任意一个字母数字下划线 【\W 代表除了字母数字下划线的字符】\s表示空格,制表符,换行符 【\S 代表除了制表符,换行符的其他字符】.代表任意字符(除了换行符)注意:. 不能匹配换行符,如果需要匹配换行符在内的所有字符就要使用 [\s\S]
用方括号 [] 来自定义字符集合,能够匹配方括号中任意一个字符 示例
自定义集合描述[ab5@]匹配a b 5 @ 中任意一个字符[^abc]匹配a b c 之外的任意一个字符[f-k]匹配 f-k 之间的任意一个字符[^A-F0-3]匹配A-F 0-3 之外的任意一个字符说明:
正则表达式的特殊符号被包含到中括号中,则失去特殊意义,除了^ - 符号之外标准字符集合,除小数点外,如果被包含与中括号中,则自定义字符集合将包含该集合,比如:[\d.-+] 将匹配 数字 小数点 + -修饰匹配次数的特殊符号
量词描述{n}表达式重复 n 次{m,n}表达式至少重复 m 次,至多重复 n 次{m,}表达式至少重复 m 次?匹配表达式 0 次或 1 次,等价于{0,1}+表达式至少出现 1 次,相当于 {1,}*表达式不出现或出现任意次,相当于{0,}扩展
贪婪模式:匹配字符越多越好,正则表达式默认为贪婪模式非贪婪模式:匹配字符越少越好,修饰匹配次数的特殊符号跟 ?本组标记,匹配的不是字符而是位置,即符合某种条件的位置
标记描述^从字符串开始的地方匹配$从字符串结束的地方匹配\b匹配一个单词边界说明:\b 匹配前面的字符和后面的字符不全是\w 示例:
java\b 会匹配字符串aaajava种的java,不会匹配aaajavaaaa中的Java\bpython 会匹配字符串pythonaaaa中的python,不会匹配aaapythonaaa说明: 反向引用(\nn),通过反向引用,可以对分组已捕获的字符串进行引用 例子1: xasdf xxyxxy0101 pythonpython 匹配 xxyxxy0101 正则表达式 ([a-z]{3,4})\1([0-9]{2,3})\2 例子2: 匹配python Python 正则表达式 (?:p|P)ython
例子1: 匹配以ing结尾的单词,不包括ing xasdf xxyxxy0101 u going eating 匹配 go eat 正则表达式 \w+(?=ing) 例子2: 匹配不是以ing结尾的单词 python going 321ing 匹配 32 正则表达式 \d+(?!ing) 例子3: 匹配Hadoop单词 javaHadooppython 正则表达式 (?<=java).*(?=python)