Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярные выражения: поиск нескольких строк (https://javascript.ru/forum/misc/70665-regulyarnye-vyrazheniya-poisk-neskolkikh-strok.html)

Jack 23.09.2017 16:20

Регулярные выражения: поиск нескольких строк
 
Всем привет.

Есть следующая конструкция

Код:

// комментарий
ComandLine 12 99 66 abc;


Для поиска комментария подходит следующее регулярное выражение
Код:

^\/\/(.*)
Для команды
Код:

^(ComandLine.*);
Но вот вопрос, как найти все команды в тексте, если
1. Для команды(ComandLine ...) может быть и не задан комментарий
2. Комментарий может быть задан на нескольких строках в виде

Код:

// комментарий
// ещё какая то инаформация
// и т.д.
ComandLine 12 99 66 abc;


Rasy 23.09.2017 16:43

Jack, читай про флаги.

рони 23.09.2017 16:46

Jack,
<textarea id="k" name=""  rows="12" > // комментарий
// ещё какая то инаформация
// и т.д.
ComandLine 12 99 66 abc;
// комментарий
ComandLine 12 99 66 abc;
// комментарий
ComandLine 12 99 66 abc;
// комментарий
ComandLine 12 99 66 abc;
</textarea>
 <script>

var line = "45346", reg = /^[^\/]*?$/gm;

k.value = k.value.match(reg).join("\n")||k.value

</script>

Jack 23.09.2017 17:19

рони,
Результат получился же
Цитата:

ComandLine 12 99 66 abc;
ComandLine 12 99 66 abc;
ComandLine 12 99 66 abc;
ComandLine 12 99 66 abc;
А комментарии ?

рони 23.09.2017 17:43

Jack,
вам какой результат нужен?

Jack 23.09.2017 18:20

рони,
Ок, видимо плохо объяснил, что нужно:
текст
Цитата:

кеуцкеsadfasdf
куецукеsdfsadf
еуцкецукеfasdf
// Какое-то писание команды
ComandLine 12 34 56 789;
кfadsasdfуцецуке
цasdfasdfукеуцке
// Описание другой команды !"№;%:?*()
// которое уместилось в 2 строки
ComandLine 123456;
dfgdf";:? ((hg98d f3hjгрва89 384
usgdfjsb532 354 23j
ComandLine 33;
54 dfg dsfg 6hdfgh
Результат:

Цитата:

// Какое-то писание команды
ComandLine 12 34 56 789;
Цитата:

// Описание другой команды !"№;%:?*()
// которое уместилось в 2 строки
ComandLine 123456;
Цитата:

ComandLine 33;

рони 23.09.2017 18:57

Jack,
<textarea id="k" name=""  rows="12"  cols="45">кеуцкеsadfasdf
куецукеsdfsadf
еуцкецукеfasdf
 // Какое-то писание команды
ComandLine 12 34 56 789;
кfadsasdfуцецуке
 цasdfasdfукеуцке
// Описание другой команды !"№;%:?*()
 // которое уместилось в 2 строки
ComandLine 123456;
 dfgdf";:? ((hg98d f3hjгрва89 384
 usgdfjsb532 354 23j
 ComandLine 33;
 54 dfg dsfg 6hdfgh
</textarea>
 <script>

var line = "45346", reg = /^\s*(\/\/|ComandLine).*$/gm;

k.value = k.value.match(reg).join("\n")||k.value

</script>

Jack 23.09.2017 19:15

рони, Спасибо большое !!! Очень помог !!!!

Jack 23.09.2017 19:19

Вот блин ... забыл про один нюанс ...
с самого начала указал не правильную регулярку к командной строке ...

Цитата:

^(ComandLine[^;]+);
Он тоже может записываться в несколько строк, а конец "командной строки" - это точка с запятой

Rasy 23.09.2017 19:28

рони,
Пояснишь зачем ты нежадное повторение применил? Его отсутствие никак не изменят результат выражения


Часовой пояс GMT +3, время: 23:24.