(?x)
現在の括弧のセットの最後まで適用されます。括弧内にない場合は正規表現全体に適用されます。 括弧内に(?x:...)
あるものすべてに適用されます。
だから、本当に、これ:
(?x: ... )
これを書く簡単な方法です:
(?:(?x) ... )
そしてそれはこのように機能します:
/red (?i) blue ( ( (?x) ( (?-i) green ) yellow ) purple )/
^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
'i' is turned on here... and here
^^^^^^^^^^^^^
but 'i' is turned off here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'x' is turned on here
(?s-m:...)
別のショートカットです。s
オンとm
オフが切り替わります。と書くこともできますが(?:(?s)(?-m)...)
、読むのはかなり難しいです。
(?ix-ix:...)
オンとオフの両方i
をオンにしても意味がないため、これはかなり悪い例です。x
例:
これは一致します:
/one (?i)TWO THREE/.match 'one two three'
i
フラグは()
:内でのみ適用されるため、これは行われません。
/one ((?i)TWO) THREE/.match 'one two three'
これもキャプチャされません。括弧がキャプチャされないことを除いて、上記と同じです。
/one (?i:TWO) THREE/.match 'one two three'
しかし、これらは一致します:
/one (?i:TWO THREE)/.match 'one two three'
/one (?i:TWO) three/.match 'one two three'