使用正则表达式操作字符串

时间:2022-02-03 10:31:52
public class RegexExpress {       public static boolean find(String str, String regex)     {         Pattern pattern = Pattern.compile(regex);         Matcher matcher = pattern.matcher(str);         boolean b = matcher.find();         System.out.println(str + "  匹配正则表达式" + regex + "    " + b);         return b;     }       public static void testFind()     {           // ^ 匹配字符串的开头 $匹配字符串结尾         RegexExpress.find("abcdef", "^abc");// 以abc开头的 能匹配到         RegexExpress.find("Aabcdef", "^abc");// 不能匹配到         RegexExpress.find("Aabcdef", "def$");// 以def结尾的 能匹配到         RegexExpress.find("Aabcdef", "^def$");// 精确匹配def 不能匹配到         RegexExpress.find("def", "^def$");// 能匹配到           // *匹配0个或者多个前面的字符         RegexExpress.find("a", "ab*");         RegexExpress.find("ab", "ab*");         RegexExpress.find("acbbb", "ab*");           // +符号匹配至少一个前面的字符         RegexExpress.find("a", "ab+");         RegexExpress.find("ab", "ab+");         RegexExpress.find("abbb", "ab+");         // ?符号匹配0个或1个前面的字符         RegexExpress.find("a", "ab?c?");         RegexExpress.find("ab", "ab?c?");         RegexExpress.find("abc", "ab?c?");         RegexExpress.find("abbcb", "ab?c?");           // .符号能匹配除换行符以外的所有字符         RegexExpress.find("a", ".");         // X|Y 匹配X或者Y         RegexExpress.find("x", "x|y");         RegexExpress.find("y", "x|y");         RegexExpress.find("abc", "abc|xyz");         RegexExpress.find("xyz", "abc|xyz");         RegexExpress.find("abc", "ab(c|x)yz");         RegexExpress.find("abcyz", "ab(c|x)yz");         // {n}恰好匹配n次前面的字符         RegexExpress.find("a", "a{3}");         RegexExpress.find("aaa", "a{3}");         // {n,}至少匹配n次前面的字符         RegexExpress.find("a", "a{3,}");         RegexExpress.find("aaa", "a{3,}");         RegexExpress.find("aaaaaa", "a{3,}");         // {n,m}至少匹配n次至多匹配m次前面的字符         RegexExpress.find("a", "a{3,4}");         RegexExpress.find("aaa", "a{3,4}");         RegexExpress.find("aaaaaa", "a{3,4}");         // [xyz]表示一个字符集匹配括号中的字符之一         RegexExpress.find("a", "[abc]");         RegexExpress.find("b", "[abc]");         RegexExpress.find("c", "[abc]");         // ^[]表示否定一个字符集 即匹配不在括号内的字符         RegexExpress.find("a", "[^abc]");         RegexExpress.find("x", "[^abc]");         RegexExpress.find("8", "[^abc]");         // [a-z]匹配a到z任意一个小写字母         RegexExpress.find("a", "[a-z]");         RegexExpress.find("$", "[a-z]");         RegexExpress.find("8", "[a-z]");         // [a-z-[bc]] 表示匹配a到z除了bc的所有字符         RegexExpress.find("a", "[a-z-[bcd]]");         RegexExpress.find("f", "[a-z-[c-z]]");         // \n换行符 \f换页符 \t制表符         RegexExpress.find("\n", "\n");         RegexExpress.find("\f", "\f");         RegexExpress.find("\t", "\t");       }       // 精确匹配字符串和正则表达式 就是看字符串的每个字符都是否满足正则表达式     private static boolean match(String str, String regex)     {         Pattern pattern = Pattern.compile(regex);         Matcher matcher = pattern.matcher(str);         boolean b = matcher.matches();         System.out.println(str + "精确匹配正则表达式" + regex + "   " + b);         return b;     }       public static void testMatch()     {         RegexExpress.match("Aabcdfsad", "^abc");         RegexExpress.match("abcdfac", "^abc");         RegexExpress.match("abc", "^abc");         RegexExpress.match("abcdef", "def$");         RegexExpress.match("def", "def$");     }       private static String replace(String str, String regex, String newStr)     {         Pattern p = Pattern.compile(regex);         Matcher m = p.matcher(str);         String b = m.replaceAll(newStr);         System.out.println(str + "被" + regex + "替换成" + b);         return b;     }       public static void testReplace()     {         RegexExpress.replace("a   b   c", " {2,}", " ");     }       public static void main(String[] args)     {         RegexExpress.testFind();         RegexExpress.testMatch();         RegexExpress.testReplace();     } }