栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java】正则表达式—regex(全)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java】正则表达式—regex(全)

正则表达式(Regular expression)用于搜索、编辑和操作字符串文本,从左到右匹配文本,每个源字符只匹配一次。

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

目录

字符串内置正则处理方法

模式匹配 Pattern Matcher

基本语法实例


  • 字符串内置正则处理方法

    // 字符串内置正则处理方法
    public static void RegExTest1() {
        // matches() 当仅且当正则匹配整个字符串时返回 true
        System.out.println("-----matches-----");
        System.out.println("Regular".matches("Regular"));
        System.out.println("Regular".matches("Regular "));
        // replaceFirst() 替换首次匹配的字符串片段
        System.out.println("-----replaceFirst-----");
        System.out.println("Regex Regex_ Regex ".replaceFirst("\w{6}", "First"));
        System.out.println("Regex Regex_ Regex ".replaceFirst("\w+\s", "First"));
        // replaceAll() 替换所有匹配的字符 不会改变原str,返回修改后的对象
        System.out.println("-----replaceAll-----");
        System.out.println("RegggexReggexReggggex".replaceAll("g{2,4}", "g"));
        // split() 按匹配的正则表达式切片字符串
        System.out.println("-----split-----");
        for (String item : "Regex Regex  R".split("\s+")) {
            System.out.println(item);   // Regex Regex R
        }
    }

结果:
-----matches-----
true
false
-----replaceFirst-----
Regex First Regex 
FirstRegex_ Regex 
-----replaceAll-----
RegexRegexRegex
-----split-----
Regex
Regex
R
  • 模式匹配 Pattern Matcher

    // 模式匹配 Pattern Matcher
    public static void RegExTest2() {
        System.out.println("-----Pattern Matcher-----");
        String str = "Regular ,  expression. ";

        Pattern pat = Pattern.compile("\w+"); // 创建模式对象 匹配 Regular与expression
        Matcher mat = pat.matcher(str);        // 创建匹配对象 匹配 str
        while (mat.find()) {
            System.out.print("Start Index: " + mat.start());    // 匹配关系 [start, end)
            System.out.print(" End Index: "+ mat.end() + " ");
            System.out.println(mat.group());    // 没有用()分组,默认打印$0
        }

        System.out.println("-----()-----"); // 添加小括号可以进行分组创建反向引用生成对应片段
        System.out.println(str.replaceAll("(\w+)(\s*)([.,])(\s*)", "$1$3"));
        // Matcher.find(index) 查找下一个匹配的位置,可指定开始下标index
        // 要先find(),找到后才有group()
        // $0 匹配 `(w+)(s*)([.,])(s*)` 结果为 `Regular空格,空格空格` 和 `expression.空格`
        // $1 匹配 `(w+)`    结果为 `Regular` 和 `expression`
        // $2 匹配 `(s*)`    结果为 `空格` 和 ``
        // $3 匹配 `([.,])`   结果为 `,` 和 `.`
        // $4 匹配 `(s*)`    结果为 `空格空格` 和 `空格`
        Pattern pat2 = Pattern.compile("(\w+)(\s*)([.,])(\s*)");
        Matcher mat2 = pat2.matcher(str);
        mat2.find();
        System.out.println("$0 : " + mat2.group());
        System.out.println("$1 : " + mat2.group(1));
        System.out.println("$3 : " + mat2.group(3));

        System.out.println("-----(?:)-----");
        // (?:) 小括号内以?:开头可以取消对应分组生成片段
        System.out.println(str.replaceAll("(\w+)(?:\s*)([.,])(?:\s*)", "$1$2"));
    }

结果:
-----Pattern Matcher-----
Start Index: 0 End Index: 7 Regular
Start Index: 11 End Index: 21 expression
-----()-----
Regular,expression.
$0 : Regular ,  
$1 : Regular
$3 : ,
-----(?:)-----
Regular,expression.
  • 基本语法实例

    
    // 基本语法
    public static void RegExTest3() {
        // 字符串中 n 表示回车,\n 表示 "n"
        // 正则表达 .  表示字符,\. 表示匹配"."
        System.out.println("-----.\s\w-----");
        System.out.println("Reg6!nrular".replaceAll("R.+", "_"));
        System.out.println("Reg6!nnular".replaceAll("\s", "_"));
        System.out.println("Reg6!nrular".replaceAll("R\w+", "_"));
        // 数字范围匹配
        System.out.println("-----^$-----");
        // 使用^与$注意范围为字符串整体的开始和结尾
        System.out.println(Pattern.compile("0$").matcher("1200n1205").find()); // false
        System.out.println(Pattern.compile("0$").matcher("1205n1200").find()); // true
        System.out.println("-----^$2-----");
        String str = "1990 2021 2017 1995 2016";
        Pattern pat = Pattern.compile("199[5-9]|20[0-1][0-6]|2017"); // 匹配1995-2017
        Matcher mat = pat.matcher(str);
        while (mat.find()) {
            System.out.print(mat.group() + " ");
        }

结果:
-----.sw-----
_
ular
Reg6!__ular
_!
ular
-----^$-----
false
true
-----^$2-----
2017 1995 2016 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424180.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号