Java中的正则表达式Regex

Java中的正则表达式Regex

码农世界 2024-05-31 前端 94 次浏览 0个评论

正则表达式(regulation expression)简称regex。是一个文本处理工具,用于匹配查找替换某种符合格式的字符串。

有两个最重要的类是pattern和matcher。

Pattern是正则表达式的编译表现形式。Matcher是用来执行匹配操作的引擎,具体操作如下:

public class Regex {
    public static void main(String[] args) {
        //1 定义正则表达式
        String regex="\\d+";//匹配一个或者多个数字
        //2 编译正则表达式
        Pattern pattern = Pattern.compile(regex);
        //3 创建匹配器
        Matcher matcher = pattern.matcher("There are 123 numbers in this 45 string 789.");
        //4 查找匹配的子字符串
        while (matcher.find()){
            System.out.println(matcher.group());
        }
    }
}

Pattern的方法

  • Pattern compile(String regex): 编译给定的正则表达式。
  • Matcher matcher(CharSequence input): 创建一个匹配器对象。

    Matcher的方法

    • boolean matches(): 尝试将整个输入序列与模式匹配。
    • boolean find(): 尝试查找输入序列中与该模式匹配的下一个子序列。
    • String group(): 返回前一次匹配操作所匹配的输入子序列。
    • int start(): 返回前一次匹配操作的初始索引。
    • int end(): 返回前一次匹配操作的最后一个字符的索引+1。

      常用的正则表达式的语法

      • .: 匹配任何单个字符
      • \d: 匹配一个数字
      • \w: 匹配一个字母、数字或下划线
      • \s: 匹配任何空白字符
      • *: 匹配前面的子表达式零次或多次
      • +: 匹配前面的子表达式一次或多次
      • ?: 匹配前面的子表达式零次或一次
      • {n}: 匹配前面的子表达式恰好n次
      • {n,}: 匹配前面的子表达式至少n次
      • {n,m}: 匹配前面的子表达式至少n次,至多m次
      • ^: 匹配输入字符串的开始
      • $: 匹配输入字符串的结束
      • []: 匹配方括号内的任意一个字符
      • [^]: 匹配不在方括号内的任意字符
      • |: 逻辑或操作符

        示例扩展:

        匹配邮箱:

        String regex = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}";

        匹配IP地址:

        String regex = "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";

        匹配日期:

        String regex = "\\d{4}-\\d{2}-\\d{2}";

        替换功能:

        public class RegexReplaceExample {
            public static void main(String[] args) {
                String input = "The rain in Spain stays mainly in the plain.";
                String regex = "ain";
                Pattern pattern = Pattern.compile(regex);
                Matcher matcher = pattern.matcher(input);
                // 替换所有匹配的子字符串
                String result = matcher.replaceAll("123");
                System.out.println(result); // 输出: The r123 in Sp123 stays m123ly in the pl123.
            }
        }

        注意事项:正则表达式的反斜杠需要双写”\\”因为在Java中\是转移字符

转载请注明来自码农世界,本文标题:《Java中的正则表达式Regex》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,94人围观)参与讨论

还没有评论,来说两句吧...

Top