正则表达式也是一种语言,在解析字符串领域独领风骚。
本文分享关于正则表达式中最常用的关键字()和|的用法
前期准备工作(包括相关工具或所使用的原料等)IntelliJ IDEAJavaRegular expressions 详细的操作方法或具体步骤
正则表达式中关于或的关系,已经讲过了一个关键字“[]”。
放在"[]"这个范围中的字符之间是或的关系,只要满足一个即为匹配。
在实际处理字符串时,有这种场景,就是“字符串之间或的关系”
这种关系在正则表达式中怎么表达呢?
用关键字"|"
"|":这个关键字表示--与关键字"|"相邻的正则表达式之间是或的关系,只要满足其中一个即可。"|"关键字的作用边界由"("或"|"界定。
先来看看测试的脚手架代码:
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!|Hello汉字!";
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;
}
}

根据对关键字"|"的描述
"Hello!|Hello汉字!"不会匹配字符串"Hello三汉字!"
执行下看看结果
Output:
Hello!|Hello汉字! is not match Hello三汉字!
false
与预期一致
OK

做过CleanCode的tx有没有发现,上面的正则表达式"Hello!|Hello汉字!",是不是有重复,譬如"Hello"和"!"是重复的
去下重复,更改下代码
Code:
String regexStr="Hello(汉字|)!";
List

上面的变更只是对,正则表达式的形式进行变更,
效果应该不会发生变化
执行下看看结果
Output:
Hello(汉字|)! is not match Hello三汉字!
false
与预期一致
Ok

细心的同学已经发现
其实上面的两个例子,已经诠释了|和()的用法
理解"|"的作用域很重要,
第一个正则表达式 "Hello!|Hello汉字!"中没有关键字"()"
因此,是字符串“Hello!”和“Hello汉字!”之间是或的关系
第二个正则表达式 "Hello(汉字|)!",关键字“|”外面有关键字“()”,因此关键字“()”左右两边的字符串“Hello”和“!”就不受关键字”|“影响
正则表达式"Hello!|Hello汉字!"和 "Hello(汉字|)!"比较特殊,可以使用关键字”?“进行改造。
更改下代码
Code:
String regexStr="Hello(汉字)?!";
List

执行下看看结果
Output:
Hello(汉字)?! is not match Hello三汉字!
false
与预期一致
OK

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