Я пытаюсь написать компонент CF, который будет анализировать wikiCreole текст. У меня проблемы с получением правильных совпадений с некоторыми из моих регулярных выражений, хотя. Я чувствую, что, если я смогу просто обвести голову первым, остальные просто щелкнут. Вот пример:
Ниже приведен пример ввода:
You can make things **bold** or //italic// or **//both//** or //**both**//.
Character formatting extends across line breaks: **bold,
this is still bold. This line deliberately does not end in star-star.
Not bold. Character formatting does not cross paragraph boundaries.
Моя первая попытка была:
<cfset out = REreplace(out, "\*\*(.*?)\*\*", "<strong>\1</strong>", "all") />
Тогда я понял, что он не будет соответствовать там, где ** не указан, и должен заканчиваться там, где есть два возврата каретки.
Итак, я попробовал это:
<cfset out = REreplace(out, "\*\*(.*?)[(\*\*)|(\r\n\r\n)]", "<strong>\1</strong>", "all") />
и это близко, но по какой-то причине дает вам это:
You can make things <strong>bold</strong>* or //italic// or <strong>//both//</strong>* or //<strong>both</strong>*//.
Character formatting extends across line breaks: <strong>bold,</strong>
this is still bold. This line deliberately does not end in star-star.
Not bold. Character formatting does not cross paragraph boundaries.
Есть идеи?
PS: Если у кого-нибудь есть какие-либо предложения по улучшению тегов или улучшению заголовка для этого поста, я весь в ушах.