2016-08-03 2 views
1

Например, у меня есть текст:Как найти строки, которые не содержат в себе определенную подстроку

goodstring sometext other text perfectstring 
goodstring badstring perfectstring 
goodstring 14554 sometext perfectstring 

Мне нужно регулярное выражение, которое находит все строки, за исключением тех, которые содержат BADSTRING между «goodstring "и" perfectstring ". Так что мне нужно что-то вроде этого:

goodstring\s(^badstring)\sperfectstring 

Что право заменить ^BADSTRING?

ответ

2

Вы можете использовать отрицательный образец опережения:

goodstring\s(?:(?!badstring).)*\sperfectstring 

RegEx Demo

  • (?!badstring) отрицательно опережение утверждение означает, что мы не имеем badstring на следующей позиции
  • (?:(?!badstring).)* будет соответствовать 0 больше характера которые не имеют badstring в следующем положении.
+1

Да. Эта работа для меня. Чем ты! – Hopeless

Смежные вопросы