abc
続かない限り、どれでも合わせたいx
。
私は正規表現を使用する傾向があります/[^x]abc/
、しかし、それを書くdabc
とdabc
、一致する部分だけに一致させたいのですがabc
。
[^x]
マッチにカウントせずに正規表現の開始を修飾するようなものを使用するにはどうすればよいですか?
否定後読みを使用して、特殊変数を介して最後の一致にアクセスできます$&
。例えば:
domatch = 'foo abc'
nomatch = 'xabc'
pattern = /(?<!x)abc/
domatch.match pattern
$&
#=> "abc"
nomatch.match pattern
$&
#=> nil
詳細については、Regexp クラスを参照してください。
角括弧を使用し、2 番目の引数としてサブグループを指定します。この場合、w は 1 つしかないため、1 がサブグループを取得します。
my_string = 'dabc'
my_string[/[^x](abc)/, 1] # => 'abc'