Ruby 如何匹配下一个非空格字符不是";的正则表达式/&引用;?

Ruby 如何匹配下一个非空格字符不是";的正则表达式/&引用;?,ruby,regex,Ruby,Regex,如何在正则表达式中表示字母“s”,其下一个非空格字符不是“/” 这些应该匹配:“s”,“str” 这些不应该是:“s/m”,“s/n” 我试过这个 "str" =~ /s[^[[:space:]]]^\// #=> nil 但是它甚至不匹配简单的用例。似乎您需要匹配任何后面没有任何0+空格字符和后面有一个/的s 使用 看 详细信息 s-字母s (?![[:space:][]*\/)-如果在当前位置的右侧出现以下情况,则会导致匹配失败的负前瞻 [[:space:][]*-0+空格

如何在正则表达式中表示字母
“s”
,其下一个非空格字符不是
“/”

  • 这些应该匹配:
    “s”
    “str”
  • 这些不应该是:
    “s/m”
    “s/n”
我试过这个

"str" =~ /s[^[[:space:]]]^\// #=> nil

但是它甚至不匹配简单的用例。

似乎您需要匹配任何后面没有任何0+空格字符和后面有一个
/
s

使用

详细信息

  • s
    -字母
    s
  • (?![[:space:][]*\/)
    -如果在当前位置的右侧出现以下情况,则会导致匹配失败的负前瞻
    • [[:space:][]*
      -0+空格
    • \/
      -a
      /

如果您只想知道
's'
字符的数量,这些字符后面没有零个或多个空格,然后是正斜杠(与其在字符串中的索引相反),则不必使用正则表达式

"sea shells /by the sea s/hore".delete(" ").gsub("s/", "").count("s")
  #=> 3
如果您只想知道是否至少有一个这样的
,您可以将
计数(“s”)
替换为
包含?(“s”)


我并不是说这比使用正则表达式更好。

也许吧?这看起来像是winnerGood,发布为。仅供参考:在Ruby 2.4中,您可以使用
pattern.match?(string)
检查是否存在匹配。类似于
/s(?![:space:]*\/)/.match?(“str”)
。这取决于问题中“下一个非空格字符”的解释。如果它的意思是“如果存在这样的字符”,那么这个答案给出了正确的结果,但是如果它的意思是“它需要存在这样的字符”,那么这是不正确的。
"sea shells /by the sea s/hore".delete(" ").gsub("s/", "").count("s")
  #=> 3