我正在尝试搜索特定街道的字符串(地址)。这就是我,但它永远不会回归真实?我试图找到一条输入为 516 Meils Bella博士波士顿,MA的街道我认为这可能是因为地址遇到了大写M,但事实并非如此。我做错了什么?
istrue = false
if ( self.pickup_address =~ /Meils(.*)/ )
istrue = true
end
if ( self.dropoff_address =~ /Meils(.*)/ )
istrue = true
end
if ( self.pickup_address =~ /^516/ )
istrue = true
end
if ( self.dropoff_address =~ /^516/ )
istrue = true
end
答案 0 :(得分:2)
您的数据可能存在问题,因为这确实匹配:
"516 Meils Bella Dr. Boston, MA".match(/Meils(.*)/)
# => #<MatchData "Meils Bella Dr. Boston, MA" 1:" Bella Dr. Boston, MA">
话虽如此,你可以通过制作一个能够捕获这两个条件的更强大的正则表达式来改善这一点:
/\A516|Meils/
除非你打算使用它,否则不需要(.*)
捕获,显然你不会这样做。
所以你可以把它折叠成:
[ self.pickup_address, self.dropoff_address ].any? |address|
addres.match(/\A516|Meils/)
end
注意使用\A
优于^
,因为它固定在字符串的开头,而不是任何行的开头。