正则表达式匹配除

时间:2016-09-08 19:10:41

标签: regex

我必须创建一个找到下一个字符串的正则表达式:

  

stackoverflow //未找到
   stackexchange //找到'stackexchange'
   stacksomething //找到'stacksomething'   堆叠另一个词 //找到'stacksomething'

说明:找到一个字符串:

  1. 以'stack'开头
  2. 以“溢出”
  3. 之外的任何字结尾
  4. 只找到这个词。
  5. 我创建了与第一个点相对应的正则表达式,但不能实现第二个和第三个。我尝试过像^((?!overflow).)*$^(?!.*\boverflow\b)这样的解决方案,但它们不起作用。这就是我所拥有的:

    stack.*
    

1 个答案:

答案 0 :(得分:4)

您可以使用此负前瞻性正则表达式:

\bstack(?!\w*overflow\b)\w*

RegEx Demo

<强>解体:

\b                 # word boundary
stack              # match literal text stack
(?!\w*overflow\b)  # negative lookahead to fail the match if word ends with overflow
\w*                # match 0 or more word characters to get full word match