正则表达式---符号介绍及其简单使用方法

\\ 反斜杠

\t 间隔 ('\u0009')

\n 换行 ('\u000A')

\r 回车 ('\u000D')

\d 数字 等价于[0-9]

\D 非数字 等价于[^0-9]

\s 空白符号 [\t\n\x0B\f\r]

\S 非空白符号 [^\t\n\x0B\f\r]

\w 单独字符 [a-zA-Z_0-9]

\W 非单独字符 [^a-zA-Z_0-9]

\f 换页符

\e Escape

\b 一个单词的边界

\B 一个非单词的边界

\G 前一个匹配的结束

 

^为限制开头

^java     条件限制为以Java为开头字符

$为限制结尾

java$     条件限制为以java为结尾字符

.为限制一个任意字符

java..     条件限制为java后除换行外任意两个字符

 

 

加入特定限制条件「[]

[a-z]     条件限制在小写a to z范围中一个字符

[A-Z]     条件限制在大写A to Z范围中一个字符

[a-zA-Z] 条件限制在小写a to z或大写A to Z范围中一个字符

[0-9]     条件限制在小写0 to 9范围中一个字符

[0-9a-z] 条件限制在小写0 to 9a to z范围中一个字符

[0-9[a-z]] 条件限制在小写0 to 9a to z范围中一个字符(交集)

 

[]中加入^后加再次限制条件「[^]

[^a-z]     条件限制在非小写a to z范围中一个字符

[^A-Z]     条件限制在非大写A to Z范围中一个字符

[^a-zA-Z] 条件限制在非小写a to z或大写A to Z范围中一个字符

[^0-9]     条件限制在非小写0 to 9范围中一个字符

[^0-9a-z] 条件限制在非小写0 to 9a to z范围中一个字符

[^0-9[a-z]] 条件限制在非小写0 to 9a to z范围中一个字符(交集)

 

在限制条件为特定字符出现0次以上时,可以使用「*

J*     0个以上J

.*     0个以上任意字符

J.*D     JD之间0个以上任意字符

 

在限制条件为特定字符出现1次以上时,可以使用「+

J+     1个以上J

.+     1个以上任意字符

J.+D     JD之间1个以上任意字符

 

在限制条件为特定字符出现有01次以上时,可以使用「?

JA?     J或者JA出现

 

限制为连续出现指定次数字符「{a}

J{2}     JJ

J{3}     JJJ

文字a个以上,并且「{a,}

J{3,}     JJJ,JJJJ,JJJJJ,???(3次以上J并存)

文字个以上,b个以下「{a,b}

J{3,5}     JJJJJJJJJJJJ

两者取一「|

J|A     JA

Java|Hello     JavaHello

 

 

package 正则表达式;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * @author Chalmers
 * @version 创建时间:2016年2月5日 下午12:48:54
 */
public class ExpTest {
	public static void main(String[] args) {
		// new ExpTest().pattern("123456789");
		// new ExpTest().patternTime(new Date());
		// new ExpTest().patternStr("aaaaabcaa");
		// new ExpTest().patternEmail("qxinhai@qq.com");
		// new ExpTest().patternMul("Java Hello World Java,Hello,,World|Sun");
		new ExpTest().patternHTML();
	}
	private void pattern(String str) {
		Pattern pattern = Pattern.compile("[\\d]{15}");
		Matcher matcher = pattern.matcher(str);
		if (matcher.find()) {
			System.out.println("匹配");
		} else {
			System.out.println("不匹配");
		}
	}
	private void patternTime(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		String time = sdf.format(date);
		// Pattern pattern = Pattern
		// .compile("[\\d]{4}-[\\d]{2}-[\\d]{2}\\s12:[\\d]{2}");
		// Pattern pattern = Pattern.compile("[\\S]{10}\\s13:[\\d]{2}");
		Pattern pattern = Pattern.compile(".+10:00");
		Matcher m = pattern.matcher(time);
		if (m.find()) {
			System.out.println("匹配");
		} else {
			System.out.println("不匹配");
			System.out.println(time);
		}
	}
	private void patternStr(String str) {
		// 表示去除掉split中的内容,然后返回String数组
		String[] strs = str.split("aa.");
		for (String s : strs) {
			System.out.print(s);
		}
	}
	//
	private void patternEmail(String email) {
		// 分出几部分:
		// 1.[\\w[.?]]+ --> 表示有若干个字符,并且'.'字符可有可无
		// 2.@ --> 表示@符号
		// 3.[\\w[.?]] --> 同上
		// 4.\\. --> 表示字符'.'
		// 5.[\\w]+ --> 表示有若干个字符
		// 简单例子:qxinhai@qq.com qxinhai-->1 @-->2 qq-->3 .-->4 com-->5
		// 之所以中间含有[.?],是因为某些邮箱会特别长
		Pattern pattern = Pattern.compile("[\\w[.?]]+@[\\w[.?]]+\\.[\\w]+");
		Matcher m = pattern.matcher(email);
		if (m.find()) {
			System.out.println("匹配");
		} else {
			System.out.println("不匹配");
		}
	}
	// 用正则表达式分割字符串,多条件分割
	private void patternMul(String str) {
		// 表示以[]中的字符分割开字符串,[]可以同时放置多个字符
		Pattern pattern = Pattern.compile("[,\\s|]+");
		String[] strs = pattern.split(str);
		for (int i = 0; i < strs.length; i++) {
			System.out.println(strs[i]);
		}
	}
	// 取出html标记
	private void patternHTML() {
		Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL);
		Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>");
		String string = matcher.replaceAll("");
		System.out.println(string);
	}
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值