正则表达式知识
正则表达式。
正则表达式用于操作字符串数据。
通过一些特定的符号来体现的。
要掌握正则表达式,必须学习一些符号。
例:"[1-9][0-9]{4,14}"表示第一个字符是1-9任意一个数字,4-14个字符是0-9的数字只能有5-15个字符。
虽然简化,但是阅读性差。
1,匹配:
使用的就是String类中的matches方法。
2,切割:
使用的就是String类中的split方法。
3,替换:
使用的就是String类中的replaceAll();方法
4,获取:
基础用法:
字符:
x:表示准确字符x
\\反斜杠字符 \转义字符
\n换行符
\r回车符
字符类:
[abc] a、b或c
[^abc] 除了a、b和c
[a-zA-Z]a到 z或 A 到Z的字母
[0-9]0到9的字符
预定义字符类:
.任意字符 输入.用\.
\d 数字[0-9]
\w 单词字符[a-zA-Z0-9]
边界匹配器:
^ 行的开头
$ 行的结尾
\b 单词边界
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
代码举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo { public static void main(String[] args) { functionDemo_4(); } /* * 获取: * 将正则规则对象的封装。 * Pattern p=Pattern.complie("a*b"); * //通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配器对象Matcher. * Matcher m=p.matcher("aaaab"); * //通过Matcher匹配器对象的方法对字符串进行操作。 * boolean b=m.matches(); */ public static void functionDemo_4() { String str= "ni hao,jie xia lai gai zen me zuo ne memeda" ; String regex= "\\b[a-z]{3}\\b" ; //1,将正则封装成对象 Pattern p=Pattern.compile(regex); //2,通过正则对象获取匹配器对象 Matcher m=p.matcher(str); //使用Matcher对象的方法对字符串进行操作。 //获取三个字母组成的单词 //查找:find(); System.out.println(str); while (m.find()){ System.out.println(m.group()); //获取匹配的子序列 System.out.println(m.start()+ ":" +m.end()); } } public static void functionDemo_3() { String str= "zhangsanttttlisinnnnxiaoqiang" ; str=str.replaceAll( "(.)\\1+" , "$1" ); //$1表示获取前面正则中的第一个组 String tel= "15811112222" ; tel=tel.replaceAll( "(\\d{3})\\d{4}(\\d{4})" , "$1****$2" ); System.out.println(str); System.out.println(tel); } public static void functionDemo_2() { /* * 切割 * * 组((A)(B(C))) * 1,((A)(B(C))) * 2,\A * 3,(B(C)) * 4,(C) */ String str= "zhangsan lisi xiaoqiang" ; //String[] names=str.split(" +");//如果名字之间是一个空格,正则就用" ";如果有多个空格,就用" +"; //如果为.正则就用"\\."; String str1= "zhangsanttttlisinnnnxiaoqiang" ; String[] names=str1.split( "(.)\\1+" ); //表示从有重复元素的地方切割 //正则中封装对象用() for (String name:names){ System.out.println(name); } } public static void functionDemo_1() { //验证手机号是否符合格式 String tel= "15200001111" ; String regex= "[1][358][0-9]{9}" ; //可以将[0-9]转成"\\d",表示数字 boolean b=tel.matches(regex); System.out.println(tel+ ":" +b); } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步