黑马程序员——Java基础---正则表达式
来源:互联网 发布:收银软件 编辑:程序博客网 时间:2024/06/04 19:52
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
正则表达式:其实是用来操作字符串的一些规则。
好处:正则的出现,对字符串的复杂操作变得更为简单。
特点:将对字符串操作的代码用一些符号来表示。只要使用了指定符号,就可以调用底层的代码对字符串进行操作。符号的出现,简化了代码的书写。
弊端:符号的出现虽然简化了书写,但是却降低了阅读性。
其实更多是用正则解决字符串操作的问题。
组:用小括号标示,每定义一个小括号,就是一个组,而且有自动编号,从1开始。
只要使用组,对应的数字就是使用该组的内容。别忘了,数组要加\\。
(aaa(wwww(ccc))(eee))技巧,从左括号开始数即可。有几个左括号就是几组。
常见操作:
1. 匹配:String matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。2. 切割:String split();
3. 替换:String replaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组。
class RegexDemo{public static void main(String[] args) {//demo();//System.out.println((char)11); //checkTel();//splitDemo("zhangsan.lisi.wangwu","\\.");//splitDemo("c:\\abc\\a.txt","\\\\");//splitDemo("erkktyqqquizzzzzo","(.)\\1+");//按照叠词完成切割。为了可以让规则的结果被重用可以将规则封装成一个组,用()完成。组的出现都有编号,从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。String str = "wer1389980000ty1234564uiod234345675f";//将字符串中的数组替换成#。//replaceAllDemo(str,"\\d{5,}","#");String str1 = "erkktyqqquizzzzzo";//将叠词替换成$. //将重叠的字符替换成单个字母。zzzz->zreplaceAllDemo(str1,"(.)\\1+","$1");}public static void replaceAllDemo(String str,String reg,String newStr){str = str.replaceAll(reg,newStr);System.out.println(str);}public static void splitDemo(String str,String reg){//String reg = " +";//按照多个空格来进行切割String[] arr = str.split(reg); System.out.println(arr.length);for(String s : arr){System.out.println(s);}}/*匹配手机号段只有 13xxx 15xxx 18xxxx*/public static void checkTel(){String tel = "16900001111";String telReg = "1[358]\\d{9}";System.out.println(tel.matches(telReg));}public static void demo(){String str = "b23a23456789";String reg = "[a-zA-Z]\\d*";boolean b= str.matches(reg);System.out.println(b);}public static void checkQQ(){String qq = "123a454";String regex = "[1-9]\\d{4,14}";boolean flag = qq.matches(regex);if(flag)System.out.println(qq+"...is ok");elseSystem.out.println(qq+"... 不合法");}/*对QQ号码进行校验要求:5~15 0不能开头,只能是数字这种方式,使用了String类中的方法,进行组合完成了需求。但是代码过于复杂。*/public static void checkQQ_1(){String qq = "1882345a0";int len = qq.length();if(len>=5 && len<=15){if(!qq.startsWith("0"))//Integer.parseInt("12a");NumberFormatException{try{long l = Long.parseLong(qq);System.out.println("qq:"+l);}catch (NumberFormatException e){System.out.println("出现非法字符.......");}/*char[] arr = qq.toCharArray();//123a4boolean flag = true;for(int x=0;x<arr.length; x++){if(!(arr[x]>='0' && arr[x]<='9')){flag = false;break;}}if(flag){System.out.println("qq:"+qq);}else{System.out.println("出现非法字符");}*/}else{System.out.println("不可以0开头");}}else{System.out.println("长度错误");}}}
4. 获取:将字符串中的符合规则的子串取出。
操作步骤:1) 将正则表达式封装成对象。
2) 让正则对象和要操作的字符串相关联。
3) 关联后,获取正则匹配引擎。
4) 通过引擎对符合规则的子串进行操作,比如取出。
import java.util.regex.*;class RegexDemo2 {public static void main(String[] args) {getDemo();}public static void getDemo() {String str = "ming tian jiu yao fang jia le ,da jia。";System.out.println(str);String reg = "\\b[a-z]{4}\\b";// 将规则封装成对象。Pattern p = Pattern.compile(reg);// 让正则对象和要作用的字符串相关联。获取匹配器对象。Matcher m = p.matcher(str);// System.out.println(m.matches());//其实String类中的matches方法。用的就是Pattern和Matcher对象来完成的。// 只不过被String的方法封装后,用起来较为简单。但是功能却单一。// boolean b = m.find();//将规则作用到字符串上,并进行符合规则的子串查找。// System.out.println(b);// System.out.println(m.group());//用于获取匹配后结果。// System.out.println("matches:"+m.matches());while (m.find()) {System.out.println(m.group());System.out.println(m.start() + "...." + m.end());}}}
0 0
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——Java基础—正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员-Java基础总结14——正则表达式
- 黑马程序员——Java基础-15--正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员——java基础:正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员——java基础--正则表达式
- 黑马程序员——Java基础-----正则表达式
- 黑马程序员——Java基础->正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员——java基础之正则表达式
- 黑马程序员——Java基础-----正则表达式
- 一个健壮的MD5算法
- LeetCode: Reverse Nodes in k-Group
- spark中stream编程指导(二)
- Cocos2d-x制作跳棋第四步:胜负判断、AI具体实现及实现特殊组合动作的小技巧
- HDU 2031
- 黑马程序员——Java基础---正则表达式
- 二叉树的遍历本质 - 前序,中序,后序
- PowerDesigner使用时经常报打印错误,提示安装打印机
- KMP字符串匹配算法——用最容易理解的方式描述
- Android TV 视图体系分析
- 如何学习java?
- Android仿虾米音乐播放器之电话和耳机监听
- [cocos2dx]抽象元素——CCAction动作类
- OSG嵌入Qt的第二种方式:使用QOpenGLWidget/QGLWidget