我有一个来自地图的变量,我试图在方括号之间得到一个特定的部分
(例如 “dmfkdmfk [IWANTTHISPART] mlkm”)
但它不像我那样工作。我正在尝试使用here。
原始代码:
query_values = activities.map do |activity|
'(' +
"#{activity['note']}"
+')'
end
我试过了:
query_values = activities.map do |activity|
'(' +
"#{activity['note'].[/#{"["}(.*?)#{"]"}/m, 1]}"
+')'
end
错误日志:
syntax error, unexpected '[', expecting '('
'(' + "#{activity['note'].[/#{"["}(.*?)#{"]"}/m, 1]},""'" +')'
^
quase.rb:40: syntax error, unexpected keyword_end, expecting tSTRING_DEND
我该怎么办? 非常感谢。
答案 0 :(得分:6)
str = "(dmfkdmfk[IWANTTHISPART]mlkm)"
#1使用带有外观的正则表达式
R0 = /
(?<=\[) # match a left bracket in a positive lookbehind
.+ # match one or more of any character
(?=\]) # match a right bracket in a positive lookahead
/x # free-spacing regex definition mode
(与R0 = /(?<=\[).+(?=\])/
相同)
str[R0] #=> "IWANTTHISPART"
#2左侧或右侧括号中的分割字符串
R1 = /
[\[\]] # match a left or right bracket
/x
(与R1 = /[\[\]]/
相同)
str.split(R1)[1]
#=> "IWANTTHISPART"
#3没有正则表达式
str[str.index('[')+1..str.index(']')-1]
#=> "IWANTTHISPART"
答案 1 :(得分:2)
在语法 - 糖形式中使用[]
时,接收器之后不能有一段时间。以下是不合语法的:
string.[regex, parameter]
使用普通方法调用表单:
string.[](regex, parameter)
或语法 - 糖形式:
string[regex, parameter]
答案 2 :(得分:1)
/\[(.*)\]/.match( "dmfkdmfk[IWANTTHISPART]mlkm" )[1]
=> "IWANTTHISPART"
答案 3 :(得分:1)
您可以将{{3}}与正则表达式一起使用:
> a = "dmfkdmfk[IWANTTHISPART]mlkm"
> a[/\[.*?\]/][1..-2]
#=> "IWANTTHISPART"