如何重用正则表达式的组匹配数?

Ter*_*nja 6 regex robotframework

我正在使用这个正则表达式^x{3}y{3}$检查例如这个字符串:xxxyyy,其中x's的数量与y's 的数量相同(在我的例子中3).但问题是,我不知道重复(它是在范围的数量010),所以3必须用抽象的东西来代替.

我可以使用^x*y*$^x{0,10}y{0,10}$,但是当xs 的数量与s 的数量不同时,这将不起作用y.

我正在寻找类似的东西\1,用于重用匹配的组,但在我的情况下,我想重用组匹配的数量x.

Mat*_*dge 3

由于您有固定的上限,因此您可以直接列出匹配项:

^(x{10}y{10}|x{9}y{9}|x{8}y{8}|x{7}y{7}|x{6}y{6}|x{5}y{5}|x{4}y{4}|x{3}y{3}|x{2}y{2}|xy)?$
Run Code Online (Sandbox Code Playgroud)

?处理“每个零”的情况。)

显然,如果xy在实践中很长,那么这里就会有很多重复。

另一种方法是重复替换xy为空字符串,并检查最终是否为空字符串(因为每次删除一对时,都会将另一对放在一起)。