0

我試圖讓我的頭繞過一些正則表達式,以便稍後編程一個編譯器。正則表達式格式混淆

,如果我有表達:

(A或B)*

這是同爲*或b *?或者是否意味着您可以選擇a或b零次或多次。

例如,使用此正則表達式,可以生成{ababababa}還是隻生成{aaaaaaa}或{bbbbbbb}的字符串?如果輸入符號是b,那麼這是否意味着只有b可以出現零次或多次,或者第二次出現?

非常感謝

回答

1

在大多數的正則表達式庫中,or操作拼寫|,所以你的正則表達式會是(a|b)*

那的確意味着「任何長度(包括0)的任意字符串僅由的一個 S和b的」。換句話說,圓括號與任何代數表達式一樣工作,以定義一個子表達式:將*(後綴)運算符應用於子表達a|b

有趣的事實:(a*b*)*是與(a|b)*完全相同的一組字符串。