Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > kefirbb как создать каверзный паттерн


Автор: lamao 9.11.2012, 13:22
Можно ли создать для вышеупомянутого инструмента регулярное выражения для списка на текст вида:
Код

[*]Строчка1 - bold
[*] [i]Строчка2 - italik[/i]
asdf
[*][highlight]Строчка3 - hightlight[/highlight]
[*][padding=10]Строчка4 - code[/padding]

чтобы обработались все элементы кроме [*]. Т.е. другими словами нужно здесь нужно выделить 4 строки без символов [*] в начале. Сейчас используется конфиг вида 
Код

<scope name="listScope" ignoreText="false">
        <code name="li">
            <pattern>[*]<var regex="[^(\[\*\])]+" scope="escapeXmlAndBr"/></pattern>
            <template>&lt;li&gt;<var/>&lt;/li&gt;</template>
        </code>
    </scope>

Но он не здесь отрабатывает неправильно.

Или все же выражениями никак и надо препроцесинг джаваскриптом?

Автор: lamao 13.11.2012, 13:19
В общем все таки пришлось делать препроцесор, который будет заменять тэг [*] на парный тэг. Хочется сделать все через регулярные выражения, но сейчас столкнулся с проблеммой. При таком выражении

Код

(\[list[\]|=?\]])(.*)(\[/list\])


Для такого текста 
Код

aaa[list][*]bbb[*]ccc[/list]dddaaa[list][*]bbb[*]ccc[/list]ddd


выдает самый длинный вариант (т.е. не 2 списка, а один). Точно помню что это можно сконфигурировать, но вот как совсем забыл.

Автор: jk1 13.11.2012, 17:58
Это вопрос "жадности" квантификатора. Вместо .* надо использовать .*?

Автор: lamao 14.11.2012, 10:39
Цитата(jk1 @ 13.11.2012,  17:58)
Это вопрос "жадности" квантификатора. Вместо .* надо использовать .*?

О это оно, вспомнил. Огромное спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)