2012-11-13 75 views
15

假设我想要一个正则表达式匹配“跳过这个桥FOOL”以及“跳过这个桥”。我如何使“FOOL”可选(0或1次出现)?正则表达式匹配1个或更少的字符串?

+11

我不明白为什么人们downvoted这一点。确定它在手册中......但简单的事实是API手册通常是SUCK和堆栈交换。已成为简单主持答案的前往网站,没有蹩脚的API文档或15页的博客。我遵循这个链接,因为我忘记了如何和需要一个简单的答案,没有花费半个小时阅读通过蹩脚的手册,只是为了找到简单的东西。 此处的版主必须认识到,StackExchange已成为人们赖以信赖的产品。像这样的问题在S.E.中是精确的。产品定义。和它一起生活。 –

回答

12

You might want to have a look at a regex tutorial

正则表达式的选装件都标有一个问号:

Jump over this bridge(FOOL)? 

如果你想匹配任何字符串,包括超过两次少FOOL,事情变得有点复杂。然后,你将是最好关闭用negative lookahead更先进的理念:

^(?!(.*FOOL){2}) 

这将打开它的头逻辑,并声称该字符串包含的FOOL 2(或更多)的实例。

+0

-1,每一个堆栈溢出问题都可以用“通过阅读一个X教程”来回答,所以评论除了诋毁海报外没有其他价值,不应该包含在内。回答的外部链接也不被赞同(答案应该在问题本身,就像你已经完成) – pjcard

+0

@pjcard同意。我已经重新回答了答案。 –

+1

谢谢,我已将其更改为+1。 – pjcard

1

尝试这样做:

Jump over this bridge(FOOL)? 

你可以把一组字符串太:

Jump over this bridge(FOOL| FOOB)? 
10

您可以使用?标记将组的出现指定为可选(发生0或1次),或者还可以使用最小/最大值为0和1的大括号,因此答案为:

Jump over this bridge(FOOL)? 

Jump over this bridge(FOOL){0,1} 
相关问题