黑马程序员—Java基础—正则表达式
2015-11-29 13:42
330 查看
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
好处:正则的出现,对字符串的复杂操作变得更为简单。
特点:将对字符串操作的代码用一些符号来表示。只要使用了指定符号,就可以调用底层的代码对字符串进行操作。符号的出现,简化了代码的书写。
弊端:符号的出现虽然简化了书写,但是却降低了阅读性。
其实更多是用正则解决字符串操作的问题。
组:用小括号标示,每定义一个小括号,就是一个组,而且有自动编号,从1开始。只要使用组,对应的数字就是使用该组的内容。别忘了,数组要加\\。
(aaa(wwww(ccc))(eee))技巧,从左括号开始数即可。有几个左括号就是几组。
常见操作:
1,匹配:其实用的就是String类中的matches方法。
String reg ="[1-9][0-9]{4,14}";
boolean b = qq.matches(reg);//将正则和字符串关联对字符串进行匹配
正则表达式—匹配功能 36行 Java
Raw
2,切割:其实用的就是String类中的split方法。
正在表达式分割功能 39行 Java
Raw
3,替换:其实用的就是String类中的replaceAll()
正则表达式—替换功能 24行 Java
Raw
4,获取:
1),先要将正则表达式编译成正则对象。使用的是Pattern中静态方法 compile(regex);
2),通过Pattern对象获取Matcher对象。
Pattern用于描述正则表达式,可以对正则表达式进行解析。
而将规则操作字符串,需要从新封装到匹配器对象Matcher中。
然后使用Matcher对象的方法来操作字符串。
如何获取匹配器对象呢?
通过Pattern对象中的matcher方法。该方法可以正则规则和字符串想关联。并返回匹配器对象。
3),使用Matcher对象中的方法即可对字符串进行各种正则操作。
正则表达式—获取功能 27行 Java
Raw
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
正则表达式
正则表达式:其实是用来操作字符串的一些规则。好处:正则的出现,对字符串的复杂操作变得更为简单。
特点:将对字符串操作的代码用一些符号来表示。只要使用了指定符号,就可以调用底层的代码对字符串进行操作。符号的出现,简化了代码的书写。
弊端:符号的出现虽然简化了书写,但是却降低了阅读性。
其实更多是用正则解决字符串操作的问题。
组:用小括号标示,每定义一个小括号,就是一个组,而且有自动编号,从1开始。只要使用组,对应的数字就是使用该组的内容。别忘了,数组要加\\。
(aaa(wwww(ccc))(eee))技巧,从左括号开始数即可。有几个左括号就是几组。
常见操作:
1,匹配:其实用的就是String类中的matches方法。
String reg ="[1-9][0-9]{4,14}";
boolean b = qq.matches(reg);//将正则和字符串关联对字符串进行匹配
正则表达式—匹配功能 36行 Java
Raw
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 | /* * 判断功能 * String类的public boolean matches(String regex) * * 需求: * 判断手机号码是否满足要求? * * 分析: * A:键盘录入手机号码 * B:定义手机号码的规则 * 13436975980 *` 18631680136 15231621569 * 18886867878 15396723725 * 18638833883 * C:调用功能,判断即可 * D:输出结果 */public class RegexDemo { public static void main(String[] args) { //键盘录入手机号码 Scanner sc = new Scanner(System.in); System.out.println("请输入你的手机号码:"); String phone = sc.nextLine(); //定义手机号码的规则 String regex = "1[358]\\d{9}"; //调用功能,判断即可 boolean flag = phone.matches(regex); //输出结果 System.out.println("flag:"+flag); }} |
正在表达式分割功能 39行 Java
Raw
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 | /* * 分割功能 */public class RegexDemo2 { public static void main(String[] args) { // 定义一个字符串 String s1 = "aa,bb,cc"; // 直接分割 String[] str1Array = s1.split(","); for (int x = 0; x < str1Array.length; x++) { System.out.println(str1Array[x]); } System.out.println("---------------------"); //注意特殊字符的转意 String s2 = "aa.bb.cc"; String[] str2Array = s2.split("\\."); for (int x = 0; x < str2Array.length; x++) { System.out.println(str2Array[x]); } System.out.println("---------------------"); //注意特殊字符的转意 String s3 = "aa bb cc"; String[] str3Array = s3.split(" +"); for (int x = 0; x < str3Array.length; x++) { System.out.println(str3Array[x]); } System.out.println("---------------------"); //硬盘上的路径,我们应该用\\替代\ String s4 = "E:\\JavaSE\\day14\\avi"; String[] str4Array = s4.split("\\\\"); for (int x = 0; x < str4Array.length; x++) { System.out.println(str4Array[x]); } System.out.println("---------------------"); }} |
正则表达式—替换功能 24行 Java
Raw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | /* * 替换功能 * String类的public String replaceAll(String regex,String replacement) * 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 */public class RegexDemo { public static void main(String[] args) { // 定义一个字符串 String s = "helloqq12345worldkh622112345678java"; // 我要去除所有的数字,用*给替换掉 // String regex = "\\d+"; // String regex = "\\d"; //String ss = "*"; // 直接把数字干掉 String regex = "\\d+"; String ss = ""; String result = s.replaceAll(regex, ss); System.out.println(result); }} |
1),先要将正则表达式编译成正则对象。使用的是Pattern中静态方法 compile(regex);
2),通过Pattern对象获取Matcher对象。
Pattern用于描述正则表达式,可以对正则表达式进行解析。
而将规则操作字符串,需要从新封装到匹配器对象Matcher中。
然后使用Matcher对象的方法来操作字符串。
如何获取匹配器对象呢?
通过Pattern对象中的matcher方法。该方法可以正则规则和字符串想关联。并返回匹配器对象。
3),使用Matcher对象中的方法即可对字符串进行各种正则操作。
正则表达式—获取功能 27行 Java
Raw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import java.util.regex.Matcher;import java.util.regex.Pattern; /* * 获取功能 * Pattern和Matcher类的使用 * * 模式和匹配器的基本使用顺序 */public class RegexDemo { public static void main(String[] args) { // 模式和匹配器的典型调用顺序 // 把正则表达式编译成模式对象 Pattern p = Pattern.compile("a*b"); // 通过模式对象得到匹配器对象,这个时候需要的是被匹配的字符串 Matcher m = p.matcher("aaaaab"); // 调用匹配器对象的功能 boolean b = m.matches(); System.out.println(b); //这个是判断功能,但是如果做判断,这样做就有点麻烦了,我们直接用字符串的方法做 String s = "aaaaab"; String regex = "a*b"; boolean bb = s.matches(regex); System.out.println(bb); }} |
相关文章推荐
- 程序员技术练级攻略
- 谈谈Java程序员进阶的那些知识和方向
- Android面试题精选
- Android面试题精选,自己收藏下
- 黑马程序员—Java基础—数组
- 黑马程序员—java基础—常用API
- 栈和队列的区别是啥? 吃多了拉就是队列;吃多了吐就是栈(程序员段子)
- 远古程序员
- 黑马程序员—Java基础—面向对象
- 黑马程序员—Java基础知识汇总
- 黑马程序员——javaSE_IO流
- 黑马程序员——javaSE_集合框架-Map
- 黑马程序员_java用java进行复制文件(考虑使用多线程),能系统自带快吗??
- 从支付宝面试题谈:怎样有效减少用户咨询的客服成本
- 成为一名更好的程序员:如何阅读源代码
- 程序员能力矩阵翻译
- 黑马程序员——java基础语法
- 英语单词--程序员专属
- iOS进阶面试题
- 转 面试(马士兵聊)