除了使用在其他的答案中提到/x
,创造了件正则表达式,然后逐步将它们结合起来可以让你小,原子大小的块慢慢地开始,然后增长正则表达式。你会看到这样一些庞大的模式,如那些用于解析电子邮件地址,互联网网址做,等
例如,这是Ruby的OpenURI源代码:
RE_LWS = /[\r\n\t ]+/n
RE_TOKEN = %r{[^\x00-()<>@,;:\\"/\[\]?={}\x7f]+}n
RE_QUOTED_STRING = %r{"(?:[\r\n\t !#-\[\]-~\x80-\xff]|\\[\x00-\x7f])*"}n
RE_PARAMETERS = %r{(?:;#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?=#{RE_LWS}?(?:#{RE_TOKEN}|#{RE_QUOTED_STRING})#{RE_LWS}?)*}n
RE_PARAMETERS
解析:
/(?:;(?-mix:[\r\n\t ]+)?(?-mix:[^\x00-()<>@,;:\\"\/\[\]?={}\x7f]+)(?-mix:[\r\n\t ]+)?=(?-mix:[\r\n\t ]+)?(?:(?-mix:[^\x00-()<>@,;:\\"\/\[\]?={}\x7f]+)|(?-mix:"(?:[\r\n\t !#-\[\]-~\x80-\xff]|\\[\x00-\x7f])*"))(?-mix:[\r\n\t ]+)?)*/n
你可以在这里发布你的正则表达式,以便我们可以在其上工作吗? –
http://stackoverflow.com/questions/3762183/split-ruby-regex-over-multiple-lines –