использование отрицательных условий в регулярных выражениях - PullRequest
6 голосов
/ 31 мая 2011

Можно ли использовать отрицательные совпадения в выражениях gsub? Я хочу заменить строки, начинающиеся с hello , за исключением строки, начинающиеся с hello Peter

my-string.gsub(/^hello@/i, '')

Что я должен поставить вместо @?

Ответы [ 2 ]

7 голосов
/ 31 мая 2011

Звучит так, будто вы хотите негативного взгляда:

>> "hello foo".gsub(/hello (?!peter)/, 'lala ') #=> "lala foo"
>> "hello peter".gsub(/hello (?!peter)/, 'lala ') #=> "hello peter"
2 голосов
/ 31 мая 2011

Как сказал вам Майкл, вам нужен негативный взгляд.

Для вашего примера это что-то вроде:

my_string.gsub(/^hello(?! peter)( .*|$)/i, '')

Это заменит в случаях как:

"hello"
"hello Mom"
"hello "
"hello Mom and Dad"

И будет игнорировать такие вещи, как:

"hello Peter"
"hello peter"
"hellomom"
"hello peter and tom"
...