我有以下数据
x
xxx
xxxxxxxxx我使用了"g“和"m”标志((1)第一次匹配时不返回,(2)^$应用于每一行)。
我想使用一个反向引用和一个替代(管道)来匹配前两行。
这是可行的(但它没有使用反向引用):
^(x)$|^xxx$这不起作用:
^(x)$|^\1\1\1$似乎管道创建了一个新的名称空间(可以这么说),而\1在管道的右侧不起作用。有没有办法避免这种行为?
发布于 2014-09-17 00:15:23
管道的工作方式是" or ":它要么与左侧匹配,要么与右侧匹配。当右侧匹配时,左侧不匹配,因此没有什么可参考的。
如果你想使用一个管道和一个反向引用,你可以尝试这样做:^(x)(\1\1|)$
这与"xxx“和"x”都匹配
发布于 2014-09-17 00:15:06
|的意思是or。regex1|regex2的意思是匹配regex1 ..if,而不是regex1。那么当regex2不匹配的时候,我们如何在regex2中反向引用它呢?
它不能被反向引用,但可以被前视模仿。
(?=^(x))\1*查看演示
http://regex101.com/r/hJ7nT4/1
https://stackoverflow.com/questions/25873551
复制相似问题