#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で行っておき、たまに違うやつを扱う必要があるとき個別の正規表現に指定する。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS