正则问题
考虑一种简单的正则表达式:
只由x()|组成的正则表达式。
小明想求出这个正则表达式能接受的最长字符串的长度。
例如((xx|xxx)x|(x|xx))xx 能接受的最长字符串是:xxxxxx,长度是6。
输入
— — — —
一个由x()|组成的正则表达式。输入长度不超过100,保证合法。
输出
— — — —
这个正则表达式能接受的最长字符串的长度。
例如,
输入:
((xx|xxx)x|(x|xx))xx
程序应该输出:
6
(1)什么是正则表达式?
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
(2)“能接受的最长字符串的长度”是什么意思?
对于题目给出的正则表达式而言,‘|’含义为或,即 ‘xx|xxx’ 表示能够接受的字符串长度为2或3,也就是说能够接受的最长字符串的长度为3。
下面将例题进行一个简单讲解:
((xx|xxx)x|(x|xx))xx
1 、 ( x x ∣ x x x ) ⇒ x x x ( x ∣ x x ) ⇒ x x 2 、 ( x x ∣ x x x ) x ⇒ x x x x 3 、 ( ( x x ∣ x x x ) x ∣ ( x ∣ x x ) ) ⇒ x x x x 4 、 ( ( x x ∣ x x x ) x ∣ ( x ∣ x x ) ) x x ⇒