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

正则表达式-Java

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

正则表达式-Java

正则表达式

正则表达式是处理文本的利器。
在做题的时候,用来处理字符串很省事。
总之,很有用。


文章目录
  • 正则表达式
  • 一、使用正则表达式
  • 二、正则表达式的语法(常用)


正则表达式就是用某种模式去匹配字符串的一个公式。


一、使用正则表达式

先放一段代码:

public class fxyinyong {
    public static void main(String[] args) {
        String str = "3113456789";
        String regStr = "(\d)(\d)\2\1";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(str);

        while (matcher.find()){
            System.out.println("找到符合规则的字符串:"+matcher.group(0));  //这里输出:3113
            System.out.println("找到第一组:"+matcher.group(1));//这里输出:3
            System.out.println("找到第二组:"+matcher.group(2));//这里输出:1
        }
    }
}

在正则表达式中Pattern类和Matcher类很重要,经常使用。
java.util.regex.Pattern类中的常用方法:

  • static Pattern compile(String regex) 将给定的正则表达式编译为模式。
  • static Pattern compile(String regex, int flags) 将给定的正则表达式编译为带有给定标志的模式。flags参数是一个位掩码,可能包括 CASE_INSENSITIVE , MULTILINE , DOTALL , UNICODE_CASE , CANON_EQ , UNIX_LINES , LITERAL , UNICODE_CHARACTER_CLASS和 COMMENTS标志中的其中一个。
  • Matcher matcher(CharSequence input) 创建一个匹配器,匹配给定的输入与此模式。
  • String[] split(CharSequence input) 将给定的输入序列分成这个模式的匹配。
  • String[] split(CharSequence input, int limit) 将给定的输入序列分成这个模式的匹配。limit参数表示所产生的字符串的最大数量。

java.util.regex.Matcher类中的常用方法:

  • boolean matches() 尝试将整个区域与模式进行匹配。
  • boolean find() 尝试查找下一个匹配,找到了就返回true。
  • boolean find(int start) 尝试查找下一个匹配,找到了就返回true。
  • int start() 返回上一个匹配的起始索引。
  • int end() 返回上一个匹配的结束索引。
  • boolean lookingAt() 将输入序列从区域开头开始与模式匹配,如果匹配上了就返回true。
  • String group() 返回当前的匹配。
  • String group(int groupIndex) 返回匹配给定群组的字符串。该群组由从1开始的索引指定的,或者用0表示整个匹配。
  • String group(String name) 返回匹配给定群组的字符串。用表示具名群组的字符串来指定。
  • String replaceAll(String replacement) 返回从匹配器输入获得将所有匹配用替换字符串替换之后的字符串。

除了这两个常用的类之外,还有java.util.regex.PatternSyntaxException类,抛出未经检查的异常,用于指示正则表达式模式中的语法错误;我们常用的java.util.Scanner类中可以使用正则表达式解析原始类型和字符串。

二、正则表达式的语法(常用)

我觉得这篇文章写的挺好:https://blog.csdn.net/weixin_40608613/article/details/102786878
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

  • 在正则表达式中需要使用转义符号的字符有:. * + - ( ) $ / ? [ ] ^ { }
    比如查找字符串中的 . 符号,则需要对 . 进行转义,即在其前加一个 。例如: reg.ex 匹配 reg.ex
    但是当这些符号写在[]里面的时候就不需要使用转义符了。

  • Java语言是区分大小写的,如果想要使正则表达式中的大小写不敏感,有两种方法:
    (1)使用Pattern.CASE_INSENSITIVE标志,用法:Pattern pattern = Pattern.compile(regStr,Pattern.CASE_INSENSITIVE);表示对所有匹配条件的字符串中的字符大小写不敏感。
    (2)使用(?i) ,用法:String regStr = "(?i)abcd";表示对abcd的大小写不敏感;String regStr = "((?i)ab)cd";表示对ab的大小写不敏感。

  • Java中的匹配模式默认为贪婪匹配,即尽可能的匹配多的。如果想要尽可能匹配少的,可以使用?,用法:

String str = "fguiabchfjgk";

String regStr1 = "abc.*";    //匹配到abchfjgk
String regStr1 = "abc.*?";   //匹配到abc
表达式描述
*?重复0次
+?重复1次
??重复0次
{n,m}?重复n次
{n,}?重复n次

就先这样吧!

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

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

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