54

正規表現は、行末にある に一致します/abc$/abc逆はどうすればいいですか?

abc行末以外にマッチさせたい。

さらに、正規表現を使用して文字列を置き換えるのでabc、文字列の後のものではなく、 のみをキャプチャしたいので、機能/abc.+$/しません。abcabc

使用する正しい正規表現は何ですか?

4

1 に答える 1

78
/abc(?!$)/

(?!$)否定先読みです。$(行末) が直接続かない abc の一致を探します。

に対してテスト済み

  • abc ddee (マッチ)
  • dddeee abc (一致なし)
  • adfassdf abc s (一致)
  • f abc ddee (一致)

それをあなたのケースに適用します:

ruby-1.9.2-p290 :007 > "aslkdjfabcalskdfjaabcaabc".gsub(/abc(?!$)/, 'xyz')
  => "aslkdjfxyzalskdfjaxyzaabc" 
于 2012-05-06T23:08:32.557 に答える