0

我不确定这个RegEx匹配什么:

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

我知道+元字符的意思是“前一个模式的一个或多个倍”。因此,a+将匹配一个或多个as 同时a*还包括空字符串。

但我认为在这种情况下,正则表达式的意思是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匹配的示例吗

4

3 回答 3

0

由于 ^ 的使用不正确,它看起来不像是一个有效的正则表达式

^ 应该像这样 [^a] 在 [] 中,或者在正则表达式的开头。+ 仅表示字符出现 1 次或多次。

如果 ^n 意味着可以重复 n 次,那么这些将是匹配的:

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!

于 2013-03-24T21:00:03.327 回答
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 美元的价格提供。

于 2013-04-10T01:39:16.330 回答
0

显然(a+b)^n(c+d)^m意味着“n无序ab的插槽后跟m无序cd的插槽”

例如,一个例子(a+b)^10(c+d)^5是:aaaababbbadcccd

于 2013-04-10T01:22:37.377 回答