正则表达式也是一种语言,在解析字符串领域独领风骚。
本文分享关于正则表达式中最常用的关键字+、?的用法
前期准备工作(包括相关工具或所使用的原料等)IntelliJ IDEAJavaRegular expressions 详细的操作方法或具体步骤
前面讲的正则表达式的关键字,大多是匹配一个字符
现实的应用中,肯定都是比一个字符多的,这些场景怎么表示呢
这个问题前面已经提到过,“*”这个表示数量的关键字,表示“*”号前面的字符串重复0次或无限次
有时候我就需要重复11次就可以,譬如匹配电话号码
此时关键词“*”就不满足要求了
现在就来介绍下表示字符串数量方面的其它关键字
+:这个关键字表示这样的数量--“*”前面的字符可以重复1次或无限次
?:这个关键字表示这样的数量--“?”前面的字符可以重复0次或1次
先来看看测试的脚手架代码:
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]!";
List
System.out.println(isMatch(input, regexStr));
} private static boolean isMatch(List
boolean result=true;
for (String input : inputs) {
Pattern pattern=Pattern.compile(regexStr);
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;
}
}

解析一下代码
[\\w\\W]:这个正则表达式中只代表一个字符
上面的代码中,Hello和!之间的字符都大于1个,
"Hello[\\w\\W]!"都不能匹配
执行下看看结果
Output:
Hello[\w\W]! is not match Hello汉字!
Hello[\w\W]! is not match Hello !
Hello[\w\W]! is not match Hello !
Hello[\w\W]! is not match Hello787
false
与预期一致
OK

把"Hello[\\w\\W]!"这个正则表达式怎么改改,让正则表达式能够匹配上面的字符串
细心的tx已经想起上面提到的关键字“+”
好,更改下代码
Code:
String regexStr="Hello[\\w\\W]+!";
List

按上面的解析,加上“+”这个关键字后,刚才不被匹配的字符串,应该都可以被成功匹配
执行一下,看看结果
Output:
true
与预期一致
OK

"?"这个关键字,还没有讲到呢
是的,前面讲到的关键字都是要匹配某种特定形态的字符,
还有一种场景,就是可能存在或不存在某种特定形态的字符
这种场景就是“?”关键字发挥作用的场景了
更改下代码:
String regexStr="Hello[\\w\\W]?!";
List

按照上面的分析,更改后的正则表达式已经能匹配到,上面列的所有字符串
执行下,看看结果
Output:
true

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