2010-04-21 3 views
0

Что такое регулярное выражение, чтобы найти текст, который имеет «abc», но не имеет перед ним «\». поэтому он должен соответствовать «jfdgabc», но не «asd \ abc». в основном, чтобы он не ускользнул.php regex не сбрасывается

ответ

2

Использование:

(?<!\\)abc 

Это negative lookbehind. В основном это говорит: найдите строку «abc», которая равна , а не, которой предшествует обратная косая черта.

Одна из проблем заключается в том, что если вы хотите разрешить экранирование обратных косых черт. Например:

123\\abcdef 

(т.е. обратная косая черта сбежала), тогда это становится немного сложнее.

+0

но вы забыли еще одну \ – zerkms

+0

Yeh я добавил дополнительный обратный слэш, но благодаря – David

0
$str = 'jfdg\abc'; 

var_dump(preg_match('#(?<!\\\)abc#', $str)); 
0

Попробуйте регулярное выражение:

(?<!\\)abc 

Это соответствует abc только тогда, когда его не предшествует \

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