首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有2个条件的正则表达式必须至少有1个条件

具有2个条件的正则表达式必须至少有1个条件
EN

Stack Overflow用户
提问于 2013-05-31 20:15:35
回答 3查看 110关注 0票数 2

我正在尝试创建一个具有两个条件的正则表达式,这两个条件中至少有一个条件必须为真,但这两个条件都为真也是允许的。这是我的正则表达式:

代码语言:javascript
复制
\(?<=\]\s)(word1|word2)(?=\s\[)\

(?<=\]\s)(?=\s\[)必须为真,但它们也可能都为真,但至少为1!

代码语言:javascript
复制
example:
] word1 - true
word1 [- true
] word1 [- true
word1 - false

匹配总是在第一个结果上bo (在结果数组中,所以'output_array‘必须是'word1'),所以这就是为什么我不想使用|,谢谢你的帮助

EN

回答 3

Stack Overflow用户

发布于 2013-05-31 20:19:17

我能想到的唯一相对简单的解决方案是复制单词列表,并将它们分成两个选项:

代码语言:javascript
复制
((?<=\]\s)(word1|word2)|(word1|word2)(?=\s\[))

编辑:另一种选择是(\]\s)?(word1|word2)(?=(?(1)|\s\[))。这只需要插入一个单词列表。请记住,我已经从这里删除了looking,并将其替换为一个组-这可能不是您正在寻找的,这取决于您的需求。我已经使用了曾傑瑞链接到的regex101页面对其进行了测试:http://regex101.com/r/mB7vM2 (谢谢你,曾傑瑞)。

票数 4
EN

Stack Overflow用户

发布于 2013-05-31 20:19:39

拥有一个大的or怎么样?

代码语言:javascript
复制
(?<=\]\s)(word1|word2)|(word1|word2)(?=\s\[)

已测试here

编辑:这将在相同的结果数组中返回word1word2

代码语言:javascript
复制
((?<=\]\s)(?:word1|word2)|(?:word1|word2)(?=\s\[))

并重新测试了here

票数 3
EN

Stack Overflow用户

发布于 2013-05-31 21:37:52

另一种方法是使用条件测试(如果支持),例如:

代码语言:javascript
复制
(?<=(\])\s|)(word1|word2)(?(-2)|(?=\s\[))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16857039

复制
相关文章

相似问题

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