Разделить регулярное выражение Ruby на несколько строк - PullRequest
58 голосов
/ 21 сентября 2010

Это может быть не совсем тот вопрос, который вы ожидаете!Я не хочу регулярное выражение, которое будет соответствовать разрывам строк;вместо этого я хочу написать длинное регулярное выражение, которое для удобства чтения я хотел бы разбить на несколько строк кода.

Что-то вроде:

"bar" =~ /(foo|
           bar)/  # Doesn't work!
# => nil. Would like => 0

Можно ли это сделать?

Ответы [ 3 ]

103 голосов
/ 11 декабря 2013

Использование% 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

41 голосов
/ 21 сентября 2010

Вам необходимо использовать модификатор /x, который включает режим свободного пробела .

3 голосов
/ 11 декабря 2013

вы можете использовать:

"bar" =~ /(?x)foo|
         bar/
...