Группировка в символьных классах regexp

12
Хорс
На сайте с 14.12.2010
Offline
21
#11

Чтобы ни черта не делать (как любит большинство программистов), предложу тупой вариант:

  • заменяем все '(' на (
  • заменяем все ')' на )
  • заменяем все '{block}' на (
  • заменяем все '{/block}' на )
  • обрабатываем указанным выше regex (с классом)
  • всё тоже самое, только в обратной последовательности

Может попозже раскачаюсь, и предложу нормальный вариант 😂

wwwwww
На сайте с 29.04.2011
Offline
195
#12

ТС, когда нормально сформулируете вопрос, ответ найдется сам.

По сути:

Не понимаете как работает регулярное выражение - сделайте через циклы.

Не понимаете как обработать сложные элементы - упростите. Первым проходом превратите эти Ваши {block} (понятно что речь идет о тегах) в один символ. Вторым ищите то, что нужно.

Видишь? Свободная подпись.
RS
На сайте с 26.02.2010
Offline
13
#13

wwwwww, вопрос не поменялся, меня все еще интересует то, что написано в первом посте. Дальше я только уточняю контекст.

Мне все еще надо сделать записть аналогичную записи [^()], только в моем случае исключать конкретную последовательность символов, типа "{block}" или любую другую - это не важно.

Циклы всегда остаются запасным вариантов, от безисходности.

wwwwww, не знаю или не понимаю - потому и спрашиваю.

Хорс, и честно пытаюсь который день найти вариант решения, а не сижу и жду ответа. За это время "бороздения" информации узнал еще много нового, например рукурсивные паттерны :) Циклом я уже решил вопрос. Но это решение не особо нравится.

wwwwww
На сайте с 29.04.2011
Offline
195
#14
Right-side:
только в моем случае исключать конкретную последовательность символов, типа "{block}" или любую другую - это не важно.

Это и есть ключ к решению проблемы - понимать, что каждая мелочь важна.

Набросайте с десяток живых примеров, тогда обсудим. А пока что Вы хотите создать абстракцию над абстракцией.

RS
На сайте с 26.02.2010
Offline
13
#15

Ну вы прям издеваетесь, я и в первом сообщении конкретный вопрос задал, и потом дальше вообще конкретно реальную задачу привел, которую я решаю. А у вас абстракция...

Попробую еще раз.

[^()]+
- выбирает все, кроме скобок "(" и ")".

Вопрос: как записать похожий паттерн, чтобы исключать несколько конкретных последовательность символов, а не только две отдельные скобки. Например нужно исключать последовательности "вася" и "петя".

Теперь обсудим? :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий