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

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]]");
        //  换行符 f换页符  制表符
        RegexExpress.find(" ", " ");
        RegexExpress.find("f", "f");
        RegexExpress.find(" ", " ");
 
    }
 
    // 精确匹配字符串和正则表达式 就是看字符串的每个字符都是否满足正则表达式
    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();
    }
}
梦里不知身是客,一晌贪欢。
原文地址:https://www.cnblogs.com/dccmmtop/p/5709946.html