管道后反向引导不起作用

时间:2014-09-16 16:06:42

标签: regex

我有以下数据

x
xxx
xxxxxxxxx

我正在使用“g”和“m”标志((1)在第一场比赛时不返回,(2)^ $适用于每一行)。

我想使用反向引用和替代(管道)匹配前两行。

这有效(但它没有采用反向引用):

^(x)$|^xxx$

这不起作用:

^(x)$|^\1\1\1$

似乎管道创建了一个新的命名空间(可以这么说),而\1在管道的右侧不起作用。有没有办法避免这种行为?

2 个答案:

答案 0 :(得分:2)

管道作为"或":它与左侧或右侧匹配。当右侧匹配时,左侧不会,因此没有任何内容可以参考。

如果您想使用竖线和背面参考,您可以尝试这样做:^(x)(\1\1|)$

这匹配" xxx"和" x"

答案 1 :(得分:0)

|表示orregex1|regex2表示匹配regex1 ..如果不尝试regex2.So当regex1不匹配时,我们如何在regex2中对其进行反向引用?

它不能被反向引用,但可以通过前瞻来模仿。

(?=^(x))\1*

参见演示

http://regex101.com/r/hJ7nT4/1