首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Backreference在管道后不起作用

Backreference在管道后不起作用
EN

Stack Overflow用户
提问于 2014-09-17 00:06:42
回答 2查看 111关注 0票数 1

我有以下数据

代码语言:javascript
复制
x
xxx
xxxxxxxxx

我使用了"g“和"m”标志((1)第一次匹配时不返回,(2)^$应用于每一行)。

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

这是可行的(但它没有使用反向引用):

代码语言:javascript
复制
^(x)$|^xxx$

这不起作用:

代码语言:javascript
复制
^(x)$|^\1\1\1$

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

EN

回答 2

Stack Overflow用户

发布于 2014-09-17 00:15:23

管道的工作方式是" or ":它要么与左侧匹配,要么与右侧匹配。当右侧匹配时,左侧不匹配,因此没有什么可参考的。

如果你想使用一个管道和一个反向引用,你可以尝试这样做:^(x)(\1\1|)$

这与"xxx“和"x”都匹配

票数 2
EN

Stack Overflow用户

发布于 2014-09-17 00:15:06

|的意思是orregex1|regex2的意思是匹配regex1 ..if,而不是regex1。那么当regex2不匹配的时候,我们如何在regex2中反向引用它呢?

它不能被反向引用,但可以被前视模仿。

代码语言:javascript
复制
(?=^(x))\1*

查看演示

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25873551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档