- 1
"(\{\{([#%$])([^:\}]+)(:([^\}]+))?\}\})"
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+124
"(\{\{([#%$])([^:\}]+)(:([^\}]+))?\}\})"
Регуляркоговно.
Заменено на
"(\{\{([#%$])(.+?)(:(.+))?\}\})"
Zuzik 25.07.2013 23:51 # 0
vistefan 26.07.2013 16:18 # 0
anonimb84a2f6fd141 26.07.2013 00:02 # −1
anonimb84a2f6fd141 26.07.2013 21:23 # −1
bormand 26.07.2013 22:39 # +1
wvxvw 26.07.2013 09:33 # 0
(:(.+))? - это вообще что-то мозговыносящее. Зачем?
bormand 26.07.2013 10:13 # +1
Опциональное двоеточие с неким текстом после него.
Как я понял регулярка парсит такие выражения: Вопрос к ОП'у: это какой-то шаблонизатор?
wvxvw 26.07.2013 10:22 # −1
bormand 26.07.2013 10:29 # +1
Для захвата видимо. Меня другой вопрос волнует - зачем нужны скобки снаружи, вокруг всего выражения ;)
> не понятно, как быть с нумерацией
Насколько помню, во всех движках регексов группы тупо нумеруются слева направо, согласно позиции открывающей скобки.
> я бы все равно отказался от внутренних скобок, и сделал бы так: (:.+)?,
Тогда придется ":" отрезать в коде, что тоже не айс.
wvxvw 26.07.2013 10:39 # 0
Ну в том-то и дело, что отрезать в коде - проще и дешевле, а если эта группа как-то должна была использоваться через \N или $N - то ее явно таким способм использовать не получится.
bormand 26.07.2013 10:40 # +1
Чем дорисовать пару скобочек и брать значение из следующей группы? Да ну? :)
> то ее явно таким способм использовать не получится
Почему?
bormand 26.07.2013 10:43 # +2
группа 1 - весь тег {{$aa:bb}} или {{$aa}}
группа 2 - один символ $ % или #
группа 3 - aa
группа 4 - :bb, если оно есть
группа 5 - bb, если оно есть
wvxvw 26.07.2013 11:11 # 0
А как ее использовать, если она может быть, а может и не быть?
bormand 26.07.2013 11:23 # −1
wvxvw 26.07.2013 11:28 # +1
vistefan 26.07.2013 16:34 # +2
bormand 26.07.2013 16:53 # 0
vistefan 26.07.2013 16:16 # +2
bormand 26.07.2013 16:59 # 0
roman-kashitsyn 26.07.2013 17:13 # +3
Krutsiatus 26.07.2013 19:28 # +4
bormand 26.07.2013 19:45 # −1
LispGovno 26.07.2013 20:58 # +1
3.14159265 26.07.2013 21:13 # 0
vistefan 26.07.2013 21:23 # +1
Плох тот похапешнег, что не написал своего шаблонизатора, своей CMS, ...
На самом деле я уже постил часть этого шаблонизатора здесь пару говнокодов назад, где меня закидали какахами, уверяя, что пускать контроллер в область видимости данных, буферить вывод в переменную и возвращать назад - это нормально. Шаблонизатор специфичен, он построен на антипаттерне, пропагандирует "толстые контроллеры", а сам при этом всего пол сотни строк занимает. Зато бузиннес логику от верстки отделяет хорошо.
bormand 26.07.2013 10:14 # 0
vistefan 26.07.2013 16:24 # 0
vistefan 26.07.2013 21:24 # 0
krypt 26.07.2013 10:23 # +1
vistefan 26.07.2013 16:16 # +1
krypt 26.07.2013 16:19 # −6
Единственное оправданное применение регэкспов, которое мне встретилось - это парсер ответа irc-сервера лет так 6 назад ;)
Stertor 31.07.2013 16:47 # −3