正则匹配各括号的作用

参考: 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 @ 2023-03-27 18:04  chease  阅读(167)  评论(0)    收藏  举报