Ruby 当字符串包含括号后的文本时,字符串不匹配

Ruby 当字符串包含括号后的文本时,字符串不匹配,ruby,regex,string,Ruby,Regex,String,这项工作: str = "California (LA) rocks" match_string = "rocks" str.match(match_string) # => #<MatchData "rocks"> 必须将括号转义为match才能工作,否则它们将被解释为正则表达式模式的一部分(即作为捕获组),而不是要匹配的字符串的一部分 要转义括号,可以使用\: match_string = '\(LA\) rocks' str.match(match_string) #=

这项工作:

str = "California (LA) rocks"
match_string = "rocks"
str.match(match_string) # => #<MatchData "rocks">

必须将括号转义为
match
才能工作,否则它们将被解释为正则表达式模式的一部分(即作为捕获组),而不是要匹配的字符串的一部分

要转义括号,可以使用
\

match_string = '\(LA\) rocks'
str.match(match_string)
#=> #<MatchData "(LA) rocks">
match_string = "\\(LA\\) rocks"

因为
match
的参数被转换为正则表达式。特别是,
“(LA)rocks”
中的括号被解释为元字符,而不是文字括号。事实上,以下匹配:

"California LA rocks".match("(LA) rocks")
# => #<MatchData "LA rocks" 1:"LA">
“加州洛杉矶岩石”。匹配(“洛杉矶岩石”)
# => #
"California LA rocks".match("(LA) rocks")
# => #<MatchData "LA rocks" 1:"LA">