zoukankan      html  css  js  c++  java
  • 使用正则表达式操作字符串

    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();
        }
    }
    梦里不知身是客,一晌贪欢。
  • 相关阅读:
    Java Concurrency
    Java Annotation,Java注解
    Think in java, notes
    嵌套事务
    java dynamic proxy,动态代理
    埃里克·雷蒙德
    HDU1222 Wolf and Rabbit
    HUT1098 素MM
    HDU1568 Fibonacci
    HDU1501 Zipper DFS+记忆化搜索
  • 原文地址:https://www.cnblogs.com/dccmmtop/p/5709946.html
Copyright © 2011-2022 走看看