2012-03-06 3 views
3

У меня есть это регулярное выражение:Изменить это регулярное выражение: {([^ ]] *)} принять ]

{([^\]]*)} // any character except ']' but i want it to accept also '\]' this combination of 2chars 

Пример

'Lorem Ipsum is simply] dummy text' should return => 'Lorem Ipsum is simply' (and this ones does) but 
'Lorem Ipsum is simply\] dummy text' => should return all the text because the ']' is escaped 

надеюсь, что это имеет смысл

ответ

7

Вы можете использовать чередование:

(?:\\\]|[^\]])* 
+0

Огромное спасибо, что он отлично работает! –

+0

Это будет неправильно разобрано: '[\\]]' – Vyktor

0

Я бы пойти с:

'~(?:[^\\\\\\]]*|\\\\.)*~' // (?:[^\\\]]|\\.)* 

В отличие от Marks ответить на этот вопрос способен разобрать [\\]], как \\, который даст вам возможность использовать \ как универсальный экранирующий символ не только для \].

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

  • Нет связанных вопросов^_^