RegEx(a + b)^ n(c + d)^ m匹配什么?

时间:2013-03-24 20:49:09

标签: regex

我不确定这RegEx匹配的是什么:

(a+b)^n(c+d)^m

我知道+元字符意味着“前一个模式的一次或多次”。因此,a+会匹配一个或多个a,而a*也会包含空字符串。

但我认为在这种情况下,RegEx意味着a or b to the nth time concatenated with c or d to the mth time,所以它匹配这样的字符串:

aaaacc (n=4, m=2)
bbbbbdddd (n=5, m=4)
aaaddddd (n=3, m=5)
bc (n=1, m=1)
aaaaaaaaaaaaccccc (n=12, m=5)
...

这是对的吗?如果不是,那么任何人都可以提供此RegEx 匹配的示例吗?

3 个答案:

答案 0 :(得分:0)

如果错误地使用^

,它看起来不像有效的正则表达式

^应该像[^ a]一样在[]之内,或者在正则表达式的最开头。 +仅表示出现一个或多个字符。

如果^ n表示可以重复n次,那么这些就是匹配:

aaaaaabccccccccd, aaaaaabaaaaaabaaaaaabccccccccdccccccccd

答案 1 :(得分:0)

显然(a+b)^n(c+d)^m表示“n个无槽 b 的插槽,后跟m个无槽位 c d 的“

e.g。 (a+b)^10(c+d)^5的一个示例是:aaaababbbadcccd

答案 2 :(得分:0)

如果您使用带有'm'选项的Perl正则表达式,例如/(a+b)^n(c+d)^m/m, '^'将匹配内部行首。所以......

/
 (a+b)    # Match one or more as followed by b
 ^n       # Match the beginning of a line followed by a literal n.
 (c+d)    # Match one or more cs followed by d
 ^m       # Match the beginning of a line followed by a literal m.
/mx

(a + b)和(c + d)将以1美元和2美元的价格提供。