给出一个非空的正则表达式和一个字符串,求该字符串是否能匹配该正则表达式。
这个正则表达式可能含有:
基本元素:
运算符:
连接(例如 ab
),ab
匹配可以表示成一个与 a
匹配的串与一个与 b
匹配的串相连接的串,这里 a
表示一个正则表达式,下同。
或(例如 a|b
),a|b
匹配与 a
和 b
中至少一个匹配的串。
闭包(例如 a*
),a*
匹配零个或多个与 a
匹配的串的连接。
正闭包(例如 a+
),a+
匹配一个或多个与 a
匹配的串的连接。
括号(例如 (a)
)
其中连接和或是二元运算符,闭包和正闭包是一元运算符。
所有运算符都是左结合的,即同等优先级的运算顺序从左到右。
闭包和正闭包的优先级最高,连接次之,或的优先级最低。