限定符和定位符

举报
周小末天天开心 发表于 2022/12/31 22:38:04 2022/12/31
【摘要】 元字符-限定符用于指定其前面的字符和组合项连续出现多少次符号含义示例说明匹配输入*指定字符重复0次或者n次(无要求)(abc)*仅包含任意个abc的字符串,等效于\w*abc、abcabcabc+指定字符重复1次或者n次(至少一次)m+(abc)*以至少1个m开头,后接任意个abc的字符m、mabc?指定字符重复0次或1次(最多一次)m+abc?以至少1个m开头,后接ab或abc的字符串ma...

元字符-限定符

用于指定其前面的字符和组合项连续出现多少次

符号 含义 示例 说明 匹配输入
* 指定字符重复0次或者n次(无要求) (abc)* 仅包含任意个abc的字符串,等效于\w* abc、abcabcabc
+ 指定字符重复1次或者n次(至少一次) m+(abc)* 以至少1个m开头,后接任意个abc的字符 m、mabc
指定字符重复0次或1次(最多一次) m+abc? 以至少1个m开头,后接ab或abc的字符串 mab、mabc、mmabc
{n} 只能输入n个字符 [abcd]{3} 由abcd中字母组成的任意长度为3的字符串 abc、bcd、adb
{n,} 指定至少n个匹配 [abcd]{3,} 由abcd中字母组成的任意长度不小于3的字符串 abc、aaabbbccc
{n,m} 指定至少n个但不多于m个匹配 [abcd]{3,5} 由abcd中字母组成的任意长度不小于3,不大于5的字符串 abc、abcd、aabcd

演示限定符的使用

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

public class RegExp05 {
    public static void main(String[] args) {
        String content = "a211111aaaaaahello";
        //a{3},1{4},\\d{2}
        //String regStr = "a{3}";// 表示匹配 aaa
        //String regStr = "1{4}";// 表示匹配 1111
        //String regStr = "\\d{2}";// 表示匹配 两位的任意数字字符
        //a{3,4},1{4,5},\\d{2,5}
        
        //细节:java 匹配默认贪婪匹配,即尽可能匹配多的
        //String regStr = "a{3,4}"; //表示匹配 aaa 或者 aaaa
        //String regStr = "1{4,5}"; //表示匹配 1111 或者 11111
        //String regStr = "\\d{2,5}"; //匹配 2 位数或者 3,4,5
        
        //1+
        //String regStr = "1+"; //匹配一个 1 或者多个 1
        //String regStr = "\\d+"; //匹配一个数字或者多个数字
        
        //1*
        //String regStr = "1*"; //匹配 0 个 1 或者多个 1
        //演示?的使用, 遵守贪婪匹配
        String regStr = "a1?"; //匹配 a 或者 a1
        Pattern pattern = Pattern.compile(regStr/*, Pattern.CASE_INSENSITIVE*/);
        Matcher matcher = pattern.matcher(content);
        
        while (matcher.find()) {
            System.out.println("找到 " + matcher.group(0));
        }
    }
}

元字符-定位符

定位符, 规定要匹配的字符串出现的位置,比如在字符串的开始还是在结束的位置

符号 含义 示例 说明 匹配输入
^ 指定起始字符 ^[0-9]+[a-z]* 以至于1个数字开头,后接任意个小写字母的字符串 1abc、123abc
$ 指定结束字符 ^[0-9]\-[a-z]+$ 以1个数字开头后连接字符“-”,并以至少1个小写字母结尾的字符串 1-a
\b 匹配目标字符串的边界 zhou\b 这里说的字符串的边界指的是子串间有空格,或者是目标字符串的位置结束 abzhou、cczhou
\B 匹配目标字符串的非边界 zhou\B 和\b的含义相反 zhouxiaomo

演示定位符的使用

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

public class RegExp06 {
    public static void main(String[] args) {
        String content = "hanshunping sphan nnhan";
        //String content = "123-abc";
        
        //以至少 1 个数字开头,后接任意个小写字母的字符串
        //String regStr = "^[0-9]+[a-z]*";
        
        //以至少 1 个数字开头, 必须以至少一个小写字母结束
        //String regStr = "^[0-9]+\\-[a-z]+$";
        
        //表示匹配边界的 han[这里的边界是指:被匹配的字符串最后, // 也可以是空格的子字符串的后面]
        //String regStr = "han\\b";
        
        //和\\b 的含义刚刚相反
        String regStr = "han\\B";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        
        while (matcher.find()) {
            System.out.println("找到=" + matcher.group(0));
        }
    }
}

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。