\\ 反斜杠
\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 9或a to z范围中一个字符
[0-9[a-z]] 条件限制在小写0 to 9或a 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 9或a to z范围中一个字符
[^0-9[a-z]] 条件限制在非小写0 to 9或a to z范围中一个字符(交集)
在限制条件为特定字符出现0次以上时,可以使用「*」
J* 0个以上J
.* 0个以上任意字符
J.*D J与D之间0个以上任意字符
在限制条件为特定字符出现1次以上时,可以使用「+」
J+ 1个以上J
.+ 1个以上任意字符
J.+D J与D之间1个以上任意字符
在限制条件为特定字符出现有0或1次以上时,可以使用「?」
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} JJJ或JJJJ或JJJJJ
两者取一「|」
J|A J或A
Java|Hello Java或Hello
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("[email protected]"); // 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]+ --> 表示有若干个字符 // 简单例子:[email protected] 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); } }