2015-02-17 2 views
2

Я уверен, что это простое регулярное выражение, но я не мог понять формулировку, чтобы получить то, что я хотел, из поиска Google/SO.RegEx соответствует части строки, если следующий символ не равен

В следующей строке, я хочу, чтобы соответствовать Foo до тех пор, как следующий символ не _(подчеркивание)

Lorem Ipsum Дол foo_ или сидеть Амет, consectetur foo ut aliquip ex ea Товарно-последовательный. DUIs Aut Е л Foo Юр боль в reprehenderit в об foo_ uptate велит еззе cillum Dolore ес Сюнт в кульпа Квай офиц Foo И. deserunt mollit аним ID Эст laborum

я должен получить 3 матча здесь все foo и игнорировать другие два foo_ экземпляров. У меня это до сих пор;

foo[^_] 

Что возвращает это;

[0] => Array 
    (
     [0] => foo 
     [1] => foou 
     [2] => fooi 
    ) 

Это соответствует одному символу после foo, чего я не хочу. Я не знаю, как не соответствовать следующему персонажу в то же время, что и говорить, что это не должно быть и подчеркнуть ... Пожалуйста, воспитывайте меня!

Для справки это предназначено для сопоставления в текстовом редакторе, поэтому я немного ограничено тем, что я могу сделать, поэтому мне нужно сопоставить эту точную строку и ничего больше.

ответ

5

Вам нужно использовать отрицательное утверждение.

foo(?!_) 

выше отрицательное опережения утверждает, что матч foo не будет сопровождаться символом подчеркивания.

DEMO

+0

Perfect - я не знал о отрицательного предпросмотра. – Novocaine

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