正则表达式匹配1个或更少的字符串?

Hen*_*hiu 24 regex

假设我想要一个正则表达式匹配"跳过这个桥FOOL"以及"跳过这个桥".如何使"FOOL"可选(0或1次出现)?

Mar*_*der 17

您可能想看一下正则表达式教程.

正则表达式的可选部分用问号表示:

Jump over this bridge( FOOL)?
Run Code Online (Sandbox Code Playgroud)

如果你想匹配任何包含FOOL少于两次的字符串,事情会变得复杂一些.那么你最好使用更先进的负向前瞻概念:

^(?!(.*FOOL){2})
Run Code Online (Sandbox Code Playgroud)

这会转动逻辑并断言该字符串包含2个(或更多)实例FOOL.

  • -1,每个堆栈溢出问题都可以用“通过阅读 X 教程”来回答,因此该评论除了诋毁海报外没有任何价值,不应包含在内。答案的外部链接也不受欢迎(答案应该在问题本身中,正如您所做的那样) (2认同)
  • 谢谢,我已将其更改为+1. (2认同)

小智 15

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

Jump over this bridge( FOOL)?
Run Code Online (Sandbox Code Playgroud)

要么

Jump over this bridge( FOOL){0,1}
Run Code Online (Sandbox Code Playgroud)