

正規表現(Ruby)で

[code]

    ^ISBN[-]?[¥d|-]+
    
[/code]

の場合

[code]

    ^ISBN-?[¥d|-]+
    
[/code]

でも同じ結果になると思うのですが  
この場合の`[]`って、`[]`内に指定された文字のどれかにマッチするの意味の`[]`でクラスとかの`[]`とはまた違いますよね


CC BY-SA 4.0
2018-05-22T01:49:46.317
44144
2018-05-22T04:24:38.080
2018-05-22T02:24:33.477
19110
28605
question
ruby 正規表現
正規表現[-]?の[]の意味


はい、Ruby の正規表現 `[-]` は `-` 1文字にマッチする表現であり、正規表現 `-` と同等です。

Ruby 2.5 のドキュメント ([これ](https://docs.ruby-
lang.org/ja/latest/doc/spec=2fregexp.html)や[これ](https://ruby-
doc.org/core-2.5.1/doc/regexp_rdoc.html)) に明示的に書かれているわけではありませんが、`[ ]` の中のハイフンは
`[a-z]`
のように範囲を表すときのみメタ文字として扱われます。先頭にあるときなど、範囲を表さないときはバックスラッシュによるエスケープ無しでも非メタ文字として扱われます。

たとえば `[-abc]` という正規表現は、`-`, `a`, `b`, `c` にマッチします (実行例:
[Rubular](http://rubular.com/r/x1Zt59ULZy) /
[Wandbox](https://wandbox.org/permlink/jrOb0pT4Kk6UszvV))。

参考ブログ: [正規表現: 文字クラス [ ]
内でエスケープしなくてもよい記号](https://techracho.bpsinc.jp/hachi8833/2017_05_30/40673) \--
Tech Racho


CC BY-SA 4.0
2018-05-22T04:24:38.080
44148
2018-05-22T04:24:38.080
19110
44144
answer