正则表达式也是一种语言,在解析字符串领域独领风骚。
本文分享关于正则表达式中最常用的关键字{n}、{n,}和{n,m}的用法
前期准备工作(包括相关工具或所使用的原料等)IntelliJ IDEAJavaRegular expressions 详细的操作方法或具体步骤
正则表达式关键字表示数量的上面已经介绍过“*”、“+”和“?”
但是上面的关键字在很多场景不是很合适
譬如要匹配一个字符只可能出现3-5次,使用“*”,“+”很明显就不合适了
今天就介绍其它几个表示数量的正则表达式关键字
{n}:这个关键字表示这样的数量-- 前面的字符只能重复n次
{n,}:这个关键字表示这样的数量-- 前面的字符重复n次或更多次
{n,m}:这个关键字表示这样的数量--前面的字符重复n到m次。这样的区间[n,m]
先来看看测试的脚手架代码:
Code:
package chapter4;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexStudyDemo {
public static void main(String[] args) {
String regexStr="Hello[\\w\\W]{2}!";
List
System.out.println(isMatch(input, regexStr));
} private static boolean isMatch(List
boolean result=true;
Pattern pattern=Pattern.compile(regexStr);
for (String input : inputs) {
Matcher matcher=pattern.matcher(input);
if (matcher.matches()) {
continue;
}
System.out.println(String.format("%s is not match %s", regexStr, input));
result=false;
}
return result;
}
}

根据上面对关键字{n}的描述,
"Hello[\\w\\W]{2}!"不能匹配字符串"Hello!"和"Hello7!"
执行下看看结果
Output:
Hello[\w\W]{2}! is not match Hello!
Hello[\w\W]{2}! is not match Hello7!
false
与预期一致
OK

有这个关键字"{n}",正则表达式的表现能力是不是又提高了不少啊
如果已经确定某种类型的字符可能出现的频繁,譬如2次到4次呢?
更改下代码
Code:
String regexStr="Hello[\\w\\W]{2,4}!";
List

根据上面的解释,
"Hello[\\w\\W]{2,4}!"除"Hello7!"外都可以匹配到
执行下看看结果
Output:
Hello[\w\W]{2,4}! is not match Hello7!
false

如果某类字符,只能确定最少会出现几次,最多不限制
这种场景正则表达式有没有相应的表达呢
有的!
细心的tx已经发现了是“{n,}”
更改下代码
Code:
String regexStr="Hello[\\w\\W]{2,}!";
List

根据上面的分析
"Hello[\\w\\W]{2,}!"能匹配上面代码中所有的字符串
执行下看看结果
Output:
true
与预期一致
OK

- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
