本文共 2615 字,大约阅读时间需要 8 分钟。
检查、匹配字符串的表达式
正则表达式是描述规则,主流语言都有良好支持
字符串校验、查找与替换是正则表达式主要使用场景
开源中国开源的正则表达式测试工具:https://tool.oschina.net/regex
正则表达式 | 说明 |
---|---|
A | 精准匹配单个字符或短语 |
x|y | 允许出现的2个字符 |
[xyz] | 字符集合,允许出现集合内任意单个字符 |
[a-z][A-Z][0-9] | 字符范围 |
[^xyz][^0-9] | 集合内字符不允许出现 |
正则表达式 | 说明 |
---|---|
\d | 匹配任意单个数字 |
\D | 匹配\d规则之外的任意单个字符 |
\w | 匹配任意单个字母数字下划线 |
\W | 匹配\w之外的任意单个字符 |
\s | 匹配单个空格 |
\n | 匹配单个换行符 |
. | 匹配任意单个字符(换行符除外) |
\. | 特殊字符,只匹配. |
正则表达式 | 说明 |
---|---|
A{3} | 精准匹配N次 |
A{3,} | 最少出现N次 |
\d{3,5} | 约定出现最少次数与最大次数 |
\d* | 字符可以出现零次至无限次,相当于{0,} |
\d+ | 字符最少出现一次,相当于{1,} |
\d? | 字符最多出现一次,相当于{0,1} |
正则表达式 | 说明 |
---|---|
^A.* | 头匹配,以某个字符(串)开头的字符串 |
.*A$ | 尾匹配,以某个字符(串)结尾的字符串 |
^A.*A$ | 全字匹配,以某个字符(串)开头,某个字符(串)结尾 |
贪婪模式
在满足条件的情况下尽可能多匹配到字符串
示例:111222333 正则:\d{6,8}
匹配结果:11122233
贪婪模式是正则表达式的默认匹配规则
非贪婪模式
在满足条件的情况下尽可能少匹配到字符串,在后面加问号
示例:111222333 正则:\d{6,8}?
匹配结果:111222
示例:<a href="www.baidu.com">百度</a><a href="www.sina.com">新浪</a>
“.*”
"www.baidu.com">百度</a><a href="www.sina.com"
“.*?”
"www.baidu.com"
"www.sina.com"
分组将"正则"分组为多个子表达式,用小括号分组包裹重复匹配
示例:abababcdcdcd
正则表达式:(ab){3}(cd){3}
示例:匹配4位或6位验证码
(^\d{4}$)|(^\d{6}$)
正则表达式允许使用Unicode码来表达汉字
示例:匹配中文姓名
^[\u4e00-\u9fa5]{2,8}$
index.html
Insert title here
city.html文件中是一堆li列表,列表中有城市中文名和英文名,例:<li>沈阳Shenyang</li>
RegexSample.html
package regex;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexSample { public static void main(String[] args) { StringBuilder content = new StringBuilder(); try { FileInputStream fis = new FileInputStream("city.html"); InputStreamReader isr = new InputStreamReader(fis,"UTF-8"); //可选,引入缓冲的机制提高文件读取的效率 BufferedReader bufferedReader = new BufferedReader(isr); String lineText = ""; while((lineText=bufferedReader.readLine()) !=null ) { content.append(lineText + "\n"); } bufferedReader.close();// System.out.println(content); }catch (IOException e) { // TODO: handle exception } //创建正则表达式对象 Pattern p = Pattern.compile("
转载地址:http://udzwb.baihongyu.com/