java 正则表达式

Posted 一个学者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 正则表达式相关的知识,希望对你有一定的参考价值。

package com.reg.test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 一个Matcher类,java.util.regex.Matcher,java.util.regex.Pattern 存在这两个包里面
 * 1)字符串里面的所有的"" 都需要转义
 * find()
 * start()
 * end()
 * group()
 * lookingAt
 * matches
 * replaceFirst
 * replaceAll
 * appendReplacement
 * appendTail
 */
public class Demo01 {
    public static void main(String[] args) {
        String content = "12eintet 23 one onete feontet";
        Matcher matcher = Pattern.compile("\bone\b").matcher(content);
        /**
         * find 一次查到发个,并将指针指向下一个
         */
        /*
        while (matcher.find()) {
            System.out.println(matcher.group());
            System.out.println(matcher.start()); // 获取开始索引
            System.out.println(matcher.end());   // 获取结束索引
        }
        */
//        test1();
//        replace();
//        append();
//        tanlan();
        reverseReplace();
    }

    public static void test1() {
        Pattern pattern = Pattern.compile("foo");
        String one = "foocontent...........";
        String two = "foo";
        Matcher matcher = pattern.matcher(two);

        System.out.println("从开头能不能查到" + matcher.lookingAt()); //必须是从字符串的头部开始匹配
        System.out.println("从中间查" + matcher.matches()); //这个是完全的匹配
    }

    public static void replace() {
        String s1 = "12onetet";
        String s2 = "1cniet23oaeb";
        String s3 = "监控中心";
        Pattern pattern = Pattern.compile("\d");
        Matcher matcher = pattern.matcher(s1);
        // 替换过后,返回一个新的字符串
        String re_content = matcher.replaceFirst(s3);
        // 替换所有的内容
        System.out.println(re_content);
        String new_re_content = matcher.replaceAll("雷");
        System.out.println(new_re_content);

    }

    public static void append() {
        /**
         * 原字符串操作 逐个查找
         */
        String REGEX = "a*b";
        String INPUT = "aabfooaabfooabfoobkkk";
        String REPLACE = "-";

        Pattern p = Pattern.compile(REGEX);
        // 获取 matcher 对象
        Matcher m = p.matcher(INPUT);
        StringBuffer sb = new StringBuffer();

        while (m.find()) {
            // 匹配到最后一个就终止,后面的内容就不追加了
            m.appendReplacement(sb, REPLACE);
        }

        System.out.println(sb);
        // 将尾部也加入进去
        m.appendTail(sb);
        System.out.println(sb.toString());

    }

    public static void tanlan() {
        String str = "这是一个正则表达式字符串查找的示例,正则表达式好厉害呀";
        // 编译正则表达式
        Pattern pattern = Pattern.compile("正.*?式");
        // 开始匹配
        Matcher matcher = pattern.matcher(str);
        // 查找字符串中是否有匹配正则表达式的字符/字符串
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }

    /**
     * 反向替换
     */
    public static void reverseReplace() {
        String time = "2018/11/22";
        Matcher matcher = Pattern.compile("(\d{4})/(\d{2})/(\d{2})").matcher(time);

        String newtime = matcher.replaceAll("$1-$2-$3");

        System.out.println(newtime);
    }

    
}

  

以上是关于java 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

java 字符串替换

text 正则表达式片段

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

java正则表达式去除html标签

循环通过 python 正则表达式匹配