Perl正则表达式 - Is(x | y)*等于[xy] *?

时间:2013-02-25 03:12:57

标签: regex perl

正如标题所说,正则表达式模式(x|y)*是否与[xy]*匹配相同的字符串?

2 个答案:

答案 0 :(得分:34)

是的,它们匹配完全相同的字符串集。

它们并不等同。 (x|y)*设置backreference[xy]*不设置。

因此,(?:x|y)*[xy]*在行为上是等效的,因为它们都没有设置反向引用。

答案 1 :(得分:13)

它接近等效,但第一个表单从( )分隔的进行捕获,可以使用$1检索(对于第一个)regex匹配时。

如果您想避免捕获,请使用

(?:re)

re是正则表达式。

注意

这只适用于xy完全是xy的情况,而不是它们是一般的正则表达式

请参阅Backtracking