2016-12-23 2 views
-2

Ну, у меня есть строка, как a:b:c:d:2\:3.Regexp: как совместить символ без escape-символа перед ним?

Итак, я хочу совместить все двоеточие (:) для PCRE и Javascript Регулярное выражение.

Ожидаемый результат: 4 двоеточия: [':', ':', ':', ':'].

Пример результата расщепляется colon:

РНР

Array('a', 'b', 'c', 'd', '2:3') 

JavaScript

['a', 'b', 'c', 'd', '2:3'] 

Пример результата матча с unescaped colon:

PHP

Array(':', ':', ':', ':') 

Javascript

[':', ':', ':', ':'] 

Благодаря

+0

и что вы пробовали до сих пор? например: * сопоставление всех двоеточий, которым предшествует символ, который не является обратным слэшем * –

+0

, в чем преимущество получения такого результата '[':', ':', ':', ':']'? – RomanPerekhrest

+0

@RomanPerekhrest Я думаю, что в конечном итоге он захочет разбить строку на эти двоеточия –

ответ

1

Вы можете использовать отрицательное для просмотра назад обеспечить : не предшествует обратный слэш.

(?<!\\): 

Демо: https://regex101.com/r/IVtDSC/1

PHP:

preg_match_all('/(?<!\\\):/', 'a:b:c:d:2\\:3', $matches); 
print_r($matches); 

Демо: https://eval.in/703687

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