Java.util.regex中matcher 和pattern的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java.util.regex中matcher 和pattern的用法相关的知识,希望对你有一定的参考价值。

求 一个 pattern 来match 2种 loop, 一个是 for loop 符合的pattern的形式是for (- ; - ; -) 还一个是while loop 要求的pattern是while (- Boolean operator -) (里面要求是逻辑算子) 想用这个方法 去寻找 有几个 for 和while loop 在一个 文档中 还有一个问题就是 如何去计算 有几个单词 在一个string里面例如"All Rights Reserved" 有3个单词, 只要是没有空格并且连续的字母后面可以跟符号或者是空格 都算是一个单词

这是我的总结:
java.lang包中的String类,java.util.regex包中的Pattern,Matcher类中都有matches()方法。
都与正则表达式有关。下面我分别举例:(字符串:"abc",正则表达式: "[a-z]3")

String类的方法:
boolean b = "abc".matches("[a-z]3"
System.out.println(b);

Pattern类中的方法:
boolean b = Pattern.matches("[a-z]3","abc");
System.out.println(b);

Matcher类中的方法:
Pattern p = Pattern.compile("[a-z]3");
Matcher m = p.matcher("acc");
boolean b =m.matches()
System.out.println(b);

得到的结果都为true。
参考技术A for循环可以这样匹配
for\s*\([^;]+;[^;]+;[^\)]+\)
while循环可以这样匹配
while\s*\(.+\)
至于统计单词只要匹配如下的就可以了
\w+(?=[^\w]+)
亲测可行
如有疑问可以到我个人网站留言(见个人资料),将为你一一解决

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.util.regex中matcher 和pattern的用法的主要内容,如果未能解决你的问题,请参考以下文章

java.util.regex中的pattern 和 matcher的用法

java 正则表达式

JAVA正则表达式 Pattern和Matcher

Java 正则表达式

java.util.regex 的 C# 等价物是啥?

java Pattern和Matcher详解