正则匹配各括号的作用

参考: https://www.cnblogs.com/zengguowang/p/7779699.html

一、小括号()、中括号[]、大括号的区别

 1>. 小括号():匹配小括号内的字符串,可以是一个,也可以是多个,常跟“|”(或)符号搭配使用,是多选结构的

  示例1:string name = "way2014"; regex:(way|zgw) result:结果是可以匹配出way的,因为是多选结构,小括号是匹配字符串的

  示例2:string text = "123456789"; regex:(0-9) result:结果是什么都匹配不到的,它只匹配字符串"0-9"而不是匹配数字, [0-9]这个字符组才是匹配0-9的数字

 2>.中括号[]:匹配字符组内的字符,比如咱们常用的[0-9a-zA-Z.?!]等,在[]内的字符都是字符,不是元字符,比如“0-9”、“a-z”这中间的“-”就是连接符号,表示范围的元字符,如果写成[-!?(]这样的话,就是普通字符

  示例1: string text = "1234567890"; regex:[0-9] result:结果是可以匹配出字符串text内的任意数字了,像上边的【或符号“|”在字符组内就是一个普通字符】

  示例2:string text = "a|e|s|v"; 当regex为[a|e|s] 时,result:结果就是匹配字符a、e、|、s 四个字符;当regex为(a|e|s)时,就是匹配a、e、s三个字符的随意一个,三个中的任意一个,这是的|是元字符。

 3>.大括号{}:匹配次数,匹配在它之前表达式匹配出来的元素出现的次数,{n}出现n次、{n,}匹配最少出现n次、{n,m}匹配最少出现n次,最多出现m次

** 一句话辅助记忆:括号越大数据越抽象**

注意: "|" 不在中括号内使用,一般只在小括号内适用

text = "a|e|s|v";
String regexStr = "[a|e|s]"; // 
		

Pattern p = Pattern.compile(regexStr); 
Matcher m = p.matcher(text);
		
while(m.find()) {
    System.out.println(m.group());  // 找到6次, 输出[a、|、e、|、s、|]
}
regexStr = "[aes]";  // 找到3次, 输出[a、e、s]
regexStr = "(a|e|s)"; // 找到3次, 输出[a、e、s]
		
		
text = "长度119";
regexStr = "[1-9]"; //找到3次, 输出[1、1、9]
regexStr = "[1-9]+"; //找到1次, 输出[119]. "+"既匹配多次, 等价 "[1-9]\\d+";
posted @   chease  阅读(128)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2018-03-27 CNN&pooling的几种形式 待
2018-03-27 python 路径相关
点击右上角即可分享
微信分享提示