这可能不是你期望的问题!我不想要一个匹配换行符的正则表达式;相反,我想写一个很长的正则表达式,为了可读性,我想将其拆分成多行代码。
类似于:
"bar" =~ /(foo|
bar)/ # Doesn't work!
# => nil. Would like => 0
可以做到吗?
这可能不是你期望的问题!我不想要一个匹配换行符的正则表达式;相反,我想写一个很长的正则表达式,为了可读性,我想将其拆分成多行代码。
类似于:
"bar" =~ /(foo|
bar)/ # Doesn't work!
# => nil. Would like => 0
可以做到吗?
使用带有 x 选项的 %r 是做这件事情的首选方式。
请参考 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
建议拆分正则表达式而不是在表达式中间截断它:
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}/
对于长字符串,我也会执行同样的操作。
/x
修饰符的答案,因为我必须到处添加\s
。拆分正则表达式更快,而且更容易阅读和维护。 - agressen您可以使用:
"bar" =~ /(?x)foo|
bar/
regexp = %r{/^
WRITE
EXPRESSION
HERE
$/}x