您的位置:首页 > 职场人生

黑马程序员—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

  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);	}}

2,切割:其实用的就是String类中的split方法。

 正在表达式分割功能 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
37
38
39

/* * 分割功能 */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("---------------------");	}}

3,替换:其实用的就是String类中的replaceAll()

 正则表达式—替换功能 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); }}

4,获取:

   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
25
26
27

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); }}

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: