2015-01-16 3 views
0

Поэтому основная идея заключается в том, что я хочу, чтобы разделить следующие на 3 секции, описание текста, HTML-кода и кода сценария:Как совместить следующее регулярное выражение?

--- 
name: Accordion 
description: | 
    ### What 
    Puts modules of content into a linear stack of panels that can be closed and opened independently of each other. The accordion also helps in shortening a page and making it more scannable. 

    ### Use when 
    The content modules are mutually exclusive. Content modules can consist of a list of items, links or text blocks. 
--- 
<!-- Accordion--> 
<div class="ui-accordion"> 
    some html 
</div> 
<!--/Accordion --> 

<script> 
some code 
</script> 

В настоящее время я был в состоянии разделить его на 2 части, но он также включает секцию сценария, которая должна быть в третьей части.

^(-{3}(?:\n|\r)([\w\W]+?)-{3})?([\w\W]*) 

Я пробовал этот способ, но Doesnt работы

^(-{3}(?:\n|\r)([\w\W]+?)-{3})?([\w\W]*)(<script.*?>([\s\S]*?)<\/script>) 

Любые предложения?

Точный выход мне нужно следующее:

### What 
     Puts modules of content into a linear stack of panels that can be closed and opened independently of each other. The accordion also helps in shortening a page and making it more scannable. 

     ### Use when 
     The content modules are mutually exclusive. Content modules can consist of a list of items, links or text blocks. 

<!-- Accordion--> 
<div class="ui-accordion"> 
    some html 
</div> 
<!--/Accordion --> 

some code 

Но она должна быть разделена на 3 группы.

+0

Почему вы не используете '<-/Accordion ->'? –

+1

Это поможет, если вы включили точный вывод, который вы хотели бы получить из примера ввода. – forgivenson

+0

Добавлен точный выход –

ответ

0

Попробуйте это:

(?:---[\s\n\r]*((?:.|[\n\r\s])*)(?=[\s\r\n]+---)[\s\r\n]+---)?(?:(?=[\n\r\s]+<!--[\s]*Accordion[\s]*-->)[\s\r\n]+<!--[\s*]Accordion[\s]*-->[\s\n\r]*((?:.|[\n\r\s])*)(?=[\s\r\n]*<!--[\s]*\/ Accordion[\s]*-->)[\s\r\n]+<!--[\s]*\/ Accordion[\s]*-->)?(?:(?:.|[\n\r\s])*(?=<script>)<script>[\s\r\n]*((?:.|[\n\r\s])*)(?=[\s\r\n]*<\/script>)[\s\r\n]+<\/script>)? 

Обратите внимание, что это строго к нескольким вещам во входных данных (что комментарии будут обернут «---», комментарий начала/конец с). Может потребоваться уточнение, чтобы соответствовать более либеральному матчу.

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