克林加号运算符在(cd⁺)⁺中如何应用?
正则表达式中
(cd⁺)⁺的含义解析 先明确正则里⁺的核心规则:X⁺表示匹配子表达式X至少1次,和X*(匹配X0次或多次)的区别是⁺不允许空匹配。
你已经知道cd⁺对应集合{cd, cdd, cddd, ...},也就是一个c后面跟1个或多个d。那(cd⁺)⁺就是把cd⁺这个整体当成一个“单元”,重复至少1次,具体展开如下:
- 重复1次:就是
cd⁺的所有元素,即cd, cdd, cddd, ... - 重复2次:把任意两个
cd⁺的元素拼接起来,比如cdcd, cdcdd, cddcd, cddcdd, cdddcd, ... - 重复3次:任意三个
cd⁺元素拼接,比如cdcdcd, cdcdcdd, cddcdcddd, ... - 以此类推,所有由1个或多个
cd⁺单元拼接成的字符串,都属于(cd⁺)⁺的集合。
再对比你提到的(d*)*等价于d*的情况:因为d*本身包含空串(0个d),所以不管重复多少次,结果还是任意数量的d(包括0个)。但cd⁺里没有空串,每个单元都是非空的(至少有1个c+1个d),所以(cd⁺)⁺的结果是多个非空的c+若干d单元拼接,和cd⁺完全不一样——cd⁺只有1个c,而(cd⁺)⁺可以有多个c,每个c后面都跟着至少1个d。
举个直观的例子:
cd属于cd⁺,也属于(cd⁺)⁺cdcdd属于(cd⁺)⁺,但不属于cd⁺cddcdddcd也属于(cd⁺)⁺
内容的提问来源于stack exchange,提问作者Wamiq Ur Rehman
相关产品推荐
相关产品推荐

