首先安利一个可视化正则表达式的工具:Regexper
一、特殊字符匹配元字符
匹配单个特殊字符,使用以下元字符
- . → 匹配任意一个字符 (除换行符\n除外)
- \d → 匹配数字,0-9;
- \D → 匹配非数字;
- \s → 匹配空白,即空白符和tab缩进;
- \S → 匹配非空白;
- \w → 匹配字母、数字或下划线:a-z、A-Z、0-9、_;
- \W → 匹配非字母、数字或下划线;
- \x → 匹配十六进制数字;
- \O → 匹配八进制数字;
- \n → 匹配换行符;
- \r → 匹配回车符;
- \v → 匹配垂直制表符;
- \t → 匹配制表符;
- \f → 匹配换页符;
- [\b] → 匹配退格字符,加[]是为了和\b区分;
二、数量
匹配多个字符使用以下元字符:
- | → 逻辑或操作符,比如"ab"和"ac"都想匹配到,可以用这样的正则:"ab|c"
- * → 前一个字符(子表达式) 出现0次或无限次,即可有可无;
- + → 前一个字符(子表达式) 出现1次或无限次,即最少一次;
- ? → 前一个字符(子表达式) 出现0次或1次,即要么不出现,要么只出现一次;
- {m} → 前一个字符(子表达式) 出现m次;
- {m,} → 前一个字符(子表达式) 至少出现m次;
- {m,n} → 前一个字符(子表达式) 出现m到n次;
注:尽量使用+?,因为做了优化,相比起{m}{m,}{m,n}速度更快。*
三、集合与区间
匹配某个范围内字符,使用以下元字符
- [] → 匹配字符集合[]中列举的字符,如:[abc],就是匹配abc中的一个字符;
- [^] → 匹配不在字符集合[]中列举的字符,如:[^abc],就是匹配不在abc中的字符;
- - → 定义一个区间,或者说匹配一个范围,如:[a-z] 就是匹配26个小写字母中的一个;
四、位置边界
限制查找的位置等,使用以下元字符
- ^ → 匹配一行的开始,多行模式能识别\n;
- $ → 匹配一行的结尾,多行模式能识别\n;
- \A → 匹配字符串开头,单行模式效果同^,多行模式不能识别\n;
- \Z → 匹配字符串结尾,单行模式效果同$,多行模式不能识别\n;
- \b → 匹配单词边界,即单词和空格间的位置,如:er\b 可以匹配never中的er,却不能匹配verb中的er;
- \B → 匹配非单词边界;
- < → 匹配单词开头;
- > → 匹配单词结尾;
网友评论