0

abc続かない限り、どれでも合わせたいx

私は正規表現を使用する傾向があります/[^x]abc/、しかし、それを書くdabcdabc、一致する部分だけに一致させたいのですがabc

[^x]マッチにカウントせずに正規表現の開始を修飾するようなものを使用するにはどうすればよいですか?

4

3 に答える 3

1

負の後読みを使用する

否定後読みを使用して、特殊変数を介して最後の一致にアクセスできます$&。例えば:

domatch = 'foo abc'
nomatch = 'xabc'
pattern = /(?<!x)abc/

domatch.match pattern
$&
#=> "abc"

nomatch.match pattern
$&
#=> nil

詳細については、Regexp クラスを参照してください。

于 2013-10-03T19:28:36.147 に答える
0

角括弧を使用し、2 番目の引数としてサブグループを指定します。この場合、w は 1 つしかないため、1 がサブグループを取得します。

my_string = 'dabc'
my_string[/[^x](abc)/, 1] # => 'abc'
于 2013-10-03T19:27:36.523 に答える