web-dev-qa-db-ja.com

分割Ruby複数行にわたる正規表現

これはあなたが期待している質問ではないかもしれません!改行で一致する正規表現は必要ありません。代わりに、読みやすくするために、複数行のコードに分割したい長い正規表現を書きたいと思います。

何かのようなもの:

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

できますか?

71
Chowlett

フリースペースモード を有効にする/x修飾子を使用する必要があります。

あなたの場合:

"bar" =~ /(foo|
           bar)/x
45
SilentGhost

これを行うには、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

105
mthorley

あなたは使うことができます:

"bar" =~ /(?x)foo|
         bar/
3
montells