Я ищу PCRE для PHP, чтобы соответствовать двоеточию, но не двоеточие с обратной косой чертой (\:
).
Я попробовал это, но это не работает, потому что теперь я знаю, ^\\
будет соответствовать любому символу, кроме обратной косой черты.
/[^\\\]:/
Мне нужно получить только двоеточия, а не сбежавшие двоеточия.
Если вы не хотите соответствовать предыдущему символу, используйте отрицательный lookbehind:
/(?<!\\):/
Обратите внимание, что вам придется сделать дополнительное экранирование при использовании приведенного выше выражения в качестве строки PHP, потому что вы должны экранировать обратную косую черту как для PHP, так и для PCRE:
'/(?<!\\\\):/'
Преимущество этого состоит в том, что он будет соответствовать двоеточию в начале строки и не будет захватывать никаких дополнительных символов.
Просто удалите третью обратную косую черту:
/[^\\]:/
Протестировано с этой строкой:
This : is : a \: test
Вы получите первые две двоеточия в результате.