#author("2018-07-04T13:49:21+09:00","default:wikiwriter","wikiwriter") #author("2022-07-28T06:28:15+00:00","default:src128","src128") *目次 [#s1d6a692] #contents *正規表現 [#uec51574] *Tips [#e8cda83a] **キャプチャなしでグルーピングしたい [#z771f934] -(?:pat) で可能。 **ORの優先度 [#ze549729] -ORの"|"優先度はとても低い。これは例えば以下のパターンの場合、'abc'または'xyz'という文字列がパターンマッチするということ。 /abc|xyz/ -正規表現のORの範囲を途中までに制限したい場合、括弧で区切るイメージ。 /a(bc|xy)z/ **文字列の埋め込み [#u6644c24] -正規表現に変数埋め込む場合 abc = 'this is pattern' /#{abc}/ -変数でも正規表現の特殊文字が含まれている場合、エスケープする必要あり。 -手作業でエスケープしても良いし、Regexp.escapeを使っても良い。 #pre{{ pat = Regexp.escape('htts://example.com?s=abc') /#{pat}/ }} *正規表現リテラル[#q6820134] **表記 [#ca5986ea] スラッシュで囲むと正規表現として扱われる。%表記を使えば正規表現中にスラッシュを含む場合に便利。 /^foobar/ # 普通のやつ /^foobar/i # 普通のやつ+iオプション %r|Ruby| # %r表記。両端を好きな文字にできる。 **オプション [#f1aa43e9] 正規表現リテラルに追加できるオプション ,i,大文字小文字を区別しない。 ,o,一番最初に正規表現の評価が行われた時に 一度だけ式展開を行う。 ,x,正規表現中の空白を無視する。 ,m,複数行モード。正規表現 "." が改行にもマッチするようになる。 ,n,文字列をバイト列として扱う。 ,e,文字列をEUCとして扱う。 ,s,文字列をSJISとして扱う。 ,u,文字列をUTF8として扱う。 "i", "m"あたりをよく使うか。文字コードの指定は全体の指定を$KCODEで行っておき、たまに違うやつを扱う必要があるとき個別の正規表現に指定する。