我有以下数据
x
xxx
xxxxxxxxx
我正在使用“g”和“m”标志((1)在第一场比赛时不返回,(2)^ $适用于每一行)。
我想使用反向引用和替代(管道)匹配前两行。
这有效(但它没有采用反向引用):
^(x)$|^xxx$
这不起作用:
^(x)$|^\1\1\1$
似乎管道创建了一个新的命名空间(可以这么说),而\1
在管道的右侧不起作用。有没有办法避免这种行为?
答案 0 :(得分:2)
管道作为"或":它与左侧或右侧匹配。当右侧匹配时,左侧不会,因此没有任何内容可以参考。
如果您想使用竖线和背面参考,您可以尝试这样做:^(x)(\1\1|)$
这匹配" xxx"和" x"
答案 1 :(得分:0)
|
表示or
。regex1|regex2
表示匹配regex1 ..如果不尝试regex2.So当regex1不匹配时,我们如何在regex2中对其进行反向引用?
它不能被反向引用,但可以通过前瞻来模仿。
(?=^(x))\1*
参见演示