java笔记 -----正则表达式

正则表达式其实就是进行字符串匹配的式子

它的标准形式如下

  匹配字符串由三个字符组成
        // 第一个字符: a/b/c
        // 第二个字符: 3/4/6/7
        // 第三个字符: o/p/q
        String str = "566";
        // 指定正则表达式的规则
       Pattern p = Pattern.compile("[abc][3467][opq]");
        // 将规则和要判断的字符串进行关联
        Matcher m = p.matcher(str);
        // 进行判断
        System.out.println(m.matches());

实际上我们也可以直接调用String的matches()方法进行匹配

  System.out.println(str.matches("[abc][3467][opq]"));

其他的一些技巧如下

        // 判断由一个小写字母组成的字符串
        System.out.println(str.matches("[a-z]"));
        // 判断由一个字母组成的字符串(只要是连续范围即可 [m-x])
        // 如果是数字[0-9]
        System.out.println(str.matches("[a-z][A-Z]"));

        // 判断由一个字符组成的字符串,这个字符不能是a/b/c
        System.out.println(str.matches("[^abc]"));

        // . 通配符 可以代表任意字符
        // 匹配由3个字符组成的字符串
        // 开头是数字  结尾是字母
        System.out.println(str.matches("\\d.[a-zA-Z]"));

        // 匹配 .
        System.out.println(str.matches("\\."));

        // 匹配 \
        System.out.println(str.matches("\\\\"));

        // ab abb abbb abbbb abbbbb...
        // + 表示之前的字符至少出现1次  >= 1
        System.out.println(str.matches("ab+"));
        // 匹配由字母开头后续是数字的字符串
        System.out.println(str.matches("[a-zA-Z]\\d+"));

        // 由数字作为头和尾的字符串
        // *  表示之前的字符可有可无  >= 0
        System.out.println(str.matches("\\d.*\\d"));

        // 匹配一个不超过两位的数字组成的字符串
        // ? 表示之前的字符最多出现一次  <= 1
        System.out.println(str.matches("\\d\\d?"));
        // +  *  ? 这三个数量词字符后面只能出现一次

### 关于Java正则表达式笔记与教程 #### 基础概念 Java中的正则表达式通过`java.util.regex`包提供支持,主要包括三个类:`Pattern`、`Matcher` 和 `PatternSyntaxException`。这些类共同协作完成字符串匹配操作[^1]。 #### 验证电子邮件地址的例子 下面是一个简单的例子,展示如何使用Java正则表达式来验证电子邮件地址的有效性: ```java import java.util.regex.Pattern; import java.util.regex.Matcher; public class EmailValidation { public static void main(String[] args) { String emailRegex = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$"; Pattern pattern = Pattern.compile(emailRegex); String email = "test@example.com"; Matcher matcher = pattern.matcher(email); if (matcher.matches()) { System.out.println("Valid email address."); } else { System.out.println("Invalid email address."); } } } ``` 此代码片段展示了如何定义一个模式并将其应用于给定的输入字符串以判断其合法性[^4]。 #### 字符串分割示例 另一个常见的应用场景是对字符串进行分割处理。例如,可以按照特定分隔符拆分字符串为多个部分: ```java String content = "wo-ai-shang-hai"; String[] str = content.split("-"); for (String s : str) { System.out.print(s + " "); } ``` 该程序会输出:“wo ai shang hai”,说明成功依据连字符进行了切割[^2]。 #### 不区分大小写的匹配选项 如果希望忽略字母大小写来进行匹配,则可以在创建`Pattern`对象时指定标志位`CASE_INSENSITIVE`: ```java Pattern pattern = Pattern.compile(reg, Pattern.CASE_INSENSITIVE); ``` 这样设置之后,在执行匹配过程中就不会考虑目标文本中的大小写了[^5]。 #### Group功能介绍 当涉及到复杂的匹配需求时,可能需要用到捕获组的概念。这允许我们将一部分子表达式括起来形成独立单元,并能够单独提取这部分的结果。比如下面这段代码演示了怎样利用group方法获取匹配项的不同组成部分: ```java import java.util.regex.*; public class RegexTest { public static void main(String[] args){ String line = "This order was placed for QT3000! OK?"; String pattern = "(.*)(\\d+)(.*)"; // 创建 Pattern 对象 Pattern r = Pattern.compile(pattern); // 创建 matcher 对象 Matcher m = r.matcher(line); if(m.find()){ System.out.println("Found value: "+m.group(0)); System.out.println("Found value: "+m.group(1)); System.out.println("Found value: "+m.group(2)); }else{ System.out.println("NO MATCH"); } } } ``` 以上就是一些有关Java正则表达式的基础知识点以及实际应用案例[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值