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:][]*\/)
-0+空格[[:space:][]*
-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