这可能不是你期待的问题!我不想要一个匹配换行符的正则表达式;相反,我想写一个长的正则表达式,为了便于阅读,我想分成多行代码。
类似的东西:
"bar" =~ /(foo|
bar)/ # Doesn't work!
# => nil. Would like => 0
可以吗?
答案 0 :(得分:103)
将%r与x选项一起使用是执行此操作的首选方法。
从github ruby样式指南
中查看此示例regexp = %r{
start # some text
\s # white space char
(group) # first group
(?:alt1|alt2) # some alternation
end
}x
regexp.match? "start groupalt2end"
https://github.com/github/rubocop-github/blob/master/STYLEGUIDE.md#regular-expressions
答案 1 :(得分:40)
您需要使用/x
修饰符,该修饰符启用free-spacing mode。
答案 2 :(得分:3)
你可以使用:
"bar" =~ /(?x)foo|
bar/
答案 3 :(得分:1)
我建议不要将正则表达式的中间部分切成小段:
full_rgx = /This is a message\. A phone number: \d{10}\. A timestamp: \d*?/
msg = /This is a message\./
phone = /A phone number: \d{10}\./
tstamp = /A timestamp: \d*?/
/#{msg} #{phone} #{tstamp}/
我对长字符串也一样。