代码之家  ›  专栏  ›  技术社区  ›  ryeguy

为什么这个正则表达式的行为是这样的?

  •  0
  • ryeguy  · 技术社区  · 15 年前

    我有一个正则表达式 here 我想把它还回去 只有 用户、评论和帖子。然而,即使我有 \s ,空白,在负字符集中,它仍然在从中提取匹配项。这是为什么?

    3 回复  |  直到 15 年前
        1
  •  1
  •   codaddict    15 年前

    它似乎不匹配任何空格字符,而只是一个位置,因为*将匹配长度为0的字符串。 尝试 ([^\s().,]+)

        2
  •  1
  •   Max Shawabkeh    15 年前

    它匹配的是空位置(零长度字符串),而不是空格,这是因为您使用的是星号(零或多个)而不是加号(一个或多个)重复修饰符。 ([^.,()\s]+) 只返回“users”、“comments”和“posts”。

        3
  •  1
  •   user267599    15 年前

    是的,因为+ 这里是一个强大的regexp,它提取每个参数 1美元=用户 2美元=评论 3美元

    ([^.,()\s]+)(([^.,()\s]+),([^.,()\s]+))

    但是,当然,不能存在那些保留字符的评论或帖子。

    或者这是一个更灵活的例子 ([^.,()\s]+)(\s*([^.,()\s]+)\s*,\s*([^.,()\s]+)\s*))