0

この正規表現が何に一致するかわかりません。

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

+メタ文字は「前のパターンの1回以上」を意味することを私は知っています。したがって、a+1つ以上のに一致aa*ますが、空の文字列も含まれます。

しかし、この場合、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)
...

これは正しいです?そうでない場合、この正規表現が一致するものの例を誰かが提供できますか?

4

3 に答える 3

0

^の誤った使用を考えると、有効な正規表現のようには見えません。

^は、この[^ a]のように[]の中にあるか、正規表現の最初にある必要があります。+は、文字が1回以上出現することを意味します。

^ nがn回繰り返すことができる場合、これらは一致します。

aaaaaabccccccccd、aaaaaabaaaaaabaaaaaabccccccccdccccccccd

于 2013-03-24T21:00:03.327 に答える
0

どうやら「順序付けられていないa 'sとb 'sのスロットとそれに続く順序付けられていないc 'sとd' sのスロット(a+b)^n(c+d)^m」を意味しますnm

たとえば、次の例に(a+b)^10(c+d)^5なります。aaaababbbadcccd

于 2013-04-10T01:22:37.377 に答える
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 に答える