正则表达式中的“或”

来源:百度知道 编辑:UC知道 时间:2024/06/25 11:09:18
请问正则表达式 [abc] 和 (a|b|c) 有哪些区别?并举例说明。谢谢!

仅仅只匹配一个字符,那没有区别。如果2个以上字符就有区别了中括号和小括号的作用是完全不同的。

[abc] 只是一个简单的字符类,匹配其中任意一个字符,或区间内字符

(a|b|c) 是分组,会返回匹配到的项

例如:(aba|abc|aca|acb) 等同 a(b[ac]|c[ab])

主要一点:两个符号的使用方法是不一样的。

不知这样讲是否明白:
public class Test2 {
public static void main(String[] args) {
System.out.println("abc".matches("[abc]"));//[abc]表示a,b or c.注意这样写后面要加+或*,单独这样输出false
System.out.println("abc".matches("[abc]+"));//[abc]表示a,b or c,此时输出true
System.out.println("abab".matches("[abc]+"));//输出true,因为字符串"abab"里的元素[abc]中都有
System.out.println("abc".matches("[ab]+"));//输出false,因为字符串"abc"中有[ab]里没有的元素。
System.out.println("abc".matches("(a|b|c)"));//(a|b|c)是或的关系,输出false这样只表示一个字符。
System.out.println("abc".matches("(a|b|c){2}"));//(a|b|c)是或的关系,如果是2个字符也输出false
System.out.println("abc".matches