正则表达式在学习字符串的过程中有很大的用处,这需要了解相关的字符知识,以及常用的
特殊字符
特殊字符说明$匹配一行的结尾,本身用\$^匹配一行的开头,本身用\^( )标记子表达式开始和结束的位置,本身要用\(和 \)[ ]标记中括号开始和结束的位置,本身要用\[和 \]{ }标记前面子表达式的频度,本身要用 \{ 和 \}*指定前面的子表达式可以出现零次或多次,本身要用 \*+指定前面的子表达式可以出现零次或多次,本身要用 \*.匹配除换行符\n之外的任何单字符,本身用\.\用于转义下一个字符,或指定八进制、十六进制字符,本身用\\?指定前面子表达式可以出现零次或一次。本身用\?|指定两项之间任意选一项,本身用\|预定义字符
预定义字符说明.可以匹配任何字符\d匹配0~9的所有数字\D匹配非数字\s匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符等\S匹配所有的非空字符\w匹配所有的单词字符,包括0~9所有数字、26个字母和下画线(_)\W匹配非单词字符边界匹配符
边界匹配符说明^行的开头$行的结尾\b单词的边界\B非单词的边界\A输入的开头\G前一个匹配的结尾\Z输入的结尾,仅用于最后的结束符\z输入的结尾Java中可以运用Pattern和Matcher来使用正则表达式。而String类也可以实现Matcher的matchers()和lookingAt()同样效果的方法
import java.util.Arrays; import java.util.regex.*; public class JavaZhengZe { //Matcher的find()和group()方法 //返回值114514 191981 public static void main(String[] args) { String str = "hello114514"+"good191981"+"world0"; Matcher m =Pattern.compile("((11\\d)|(19\\d))\\d{3}").matcher(str); while(m.find()){ System.out.println(m.group()); } } // String 中的正则用法 // public static void main1(String[] args) { // //split、matches、replaceAll 3种用法 // //split分隔字符串 // String str="abc;123,456?999|haha"; // String[] strs=str.split(";|,"); // System.out.println(Arrays.toString(strs)+"\n"); // // //matches 整个字符串是否匹配 // boolean isMatched = str.matches("(.*)123(.*)");//其中(.*)相当于省略号,可以很清楚的突出自己想要匹配的内容 // System.out.println(isMatched); // // //replaceAll 替换所需要的字符或字符串 // String replaceStr = "hello"; // String newStr = str.replaceAll("a",replaceStr); // System.out.println(newStr); // } }