交替是关于联合,那么如果我们有 R={"a"} , S={"b"} ,那么 R|S 将是 {"a", "b"}。
为什么 ab, ba 包含在 (a|b)* 中?
我不明白为什么
我认为结果集应该是
(a|b)* = {Ɛ,"a", "b", "aa","bb", "aaa", "bbb", ...}
交替是关于联合,那么如果我们有 R={"a"} , S={"b"} ,那么 R|S 将是 {"a", "b"}。
为什么 ab, ba 包含在 (a|b)* 中?
我不明白为什么
我认为结果集应该是
(a|b)* = {Ɛ,"a", "b", "aa","bb", "aaa", "bbb", ...}
本质上,您可以将 (a|b)* 视为
从中可以清楚地看出,a 或 b 的选择可以按顺序交替。希望这可以帮助。
表达式a|b
匹配a
或b
。
例如,表达式(a|b)*
匹配(a|b) (a|b) (a|b)
。在这些备选方案中的每一个中,您都可以单独选择是匹配a
还是b
. 您不必为所有这些都选择相同的。
变体“要么a*
或b*
”的发音完全一样:a*|b*
.
*
意味着零或更多,这几乎就像你会写:
(a|b)(a|b)(a|b)(a|b)(a|b)...
意味着它重复模式,而不是匹配的文本,所以如果它一次匹配a
它就不必a
再次匹配,因为它重复模式(a|b)
,所以再一次,它会匹配a
or b
。
a
这就是为什么它可以匹配s 和b
s 的任意组合