正则表达式

一、正则表达式
1.字符合集:
a)[] [abc]:abc中的任意一个字符
b)^ [^abc]:除了abc中的任意字符(中文或者标点符号也行)
c)- [a-z]: 26个小写字母中的任意一个
d)          [a-zA-Z09]:大小写字母0到9中的数字
e)& [a-z&[^bc]]:除了bc之外的任意一个小写字母


2.转义字符
a) .(点) 任意字符
b)\d 任意数字,相当于[0-9]
c)\w 任意单词字符,相当于[a-zA-Z0-9]
d)\s 任意空白字符
e)\D 非数字
f)\W 非单词字符
g)\S 非空白字符


3.数量词
a)x? 0~1个
b)x* 0~多个
c)x+ 1~多
d)x{n} n个 \w{5} 只能有5个
e)x{n,} n~多个 \w{5} 至少有5个
f)x{n,m} n~m个 \w{5,10} 5到10个


4.分组
1)() 可以把一系列正则表达式看做一组 (abc)
2) | 或 (abc)|(cba) 匹配abc或者cba


简单邮箱的正则表达式:
\w+@\w+[(\.com)|(\.cn)]+

 

 

String中正则表达式支持的三种方法:
1.字符串支持正则表达式的方式一:

* boolean flag= matches(String regex)

 

package day01;
/**
 * 字符串支持正则表达式的方式一:
 * boolean  flag= matches(String regx)
* 传入的参数为正则表达式 * - 根据给定的正则表达式验证当前字符串是否满足格式要求,满足返回true,否则返回false * @author ajia * */ public class RegularDemo { public static void main(String[] args) { /* * 邮箱正则在:[\w+@\w+(\.com)|(\.cn)]+ */ String regex="\\w+@\\w+[(\\.com)(\\.cn)]+"; //java中的\需转译 String mail="fangcf@tedu.cn"; boolean flag=mail.matches(regex); if(flag){ System.out.println("是邮箱"); }else{ System.out.println("不是邮箱"); } } }

 

  2.字符串支持正则的方法二:

* String[] split (String regex)
* -将当前字符串按照正则进行拆分
*/

 

package d

字符串支持正则的方法二:
* String[] arr=字符串名.split (String regex)
* -将当前字符串按照正则进行拆分

-参数为正则表达式
*/

ay01;

import java.util.Scanner;

/**
 * 验证手机号码的正则表达式
 * @author ajia
 *
 */
public class TestDemo {
public static void main(String[] args) {
	/*
	 *  \d{11}
	 */
	System.out.println("请输入一个手机号:");
	Scanner scan=new Scanner(System.in);
	String regex="[(\\+86)|(0086)]?\\s*[1]\\d{10}";//或者:  [1]\\d{10}
	System.out.println(regex);
	String phoneNum=scan.nextLine();
	boolean flag=phoneNum.matches(regex);
	if(flag){
		System.out.println("是手机号");
	}else{
		System.out.println("不是手机号");
	}
}
}

  3.String replaceAll(String regex,String str)

package day01;
/**
 * 字符串支持正则的方法三
 *String replaceAll(String regex,String str)
 *第一个参数为正则表达式regex,第二个参数为替换的内容
 * @author ajia
 *
 */
public class RegularDemo3 {

	public static void main(String[] args) {
		String str="abc123def456qhi789fdj";
		/*
		 * 将字符串中的数字替换为#Number
		 * 
		 */

		str=str.replaceAll("\\d+","#Number");
		System.out.println(str);
	}

}

  

习题:
1.和谐用语

* -假设用户输入一句话,屏蔽中间的脏话
* -比如:臭sb-》臭xxx
* -sb|cnm|tmd|tm|wqnmlgb|fuck

package day01;

import java.util.Scanner;

/**
 * 和谐用语
 *   -假设用户输入一句话,屏蔽中间的脏话
 *   -比如:臭sb-》臭xxx
 *   -sb|cnm|tmd|tm|wqnmlgb|fuck
 *   
 * @author ajia
 *
 */
public class Work {

	public static void main(String[] args) {
		System.out.println("请输入一句话");
		Scanner scan=new Scanner(System.in);
		String input=scan.nextLine();
		String regex="[(sb)|(cnm)|(tmd)|(wqnmlgb)|(fuck)]+";// 或者  (sb|cnm|tmd|tm|gb|fuck)
		String input1=input.replaceAll(regex,"***");
		
		System.out.println(input1);
		scan.close();

	}

}

  2.重命名图片,使用repaceAll重命名

package day01;

import java.util.Scanner;
import java.util.UUID;

/**
	 * 重命名图片
	 *  -使用repaceAll重命名
 * @author ajia
 *
 */
public class Work1 {
public static void main(String[] args) {
	System.out.println("请输入一个图片名字格式为:xxxxxxx.jpg");
	Scanner scan=new Scanner(System.in);
	String pothoName=scan.nextLine();
//	String regex="\\.";
//	String []arr=pothoName.split(regex);
//	String newName=UUID.randomUUID()+"."+arr[1];
//	System.out.println("新名字为:"+newName);
//	scan.close();
	String regex="\\.";
	String[] arr=pothoName.split(regex);
	String regex1="\\w+[^jpg]";   //   \\w+[^(jpg)]或者  .+\\.
	String newName=pothoName.replaceAll(regex1,  System.currentTimeMillis()+"." );
	System.out.println(newName);
}
}

  



 

posted @ 2018-08-21 09:50  那年丶青春无痕  阅读(148)  评论(0编辑  收藏  举报