Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.09.2017, 16:20
Интересующийся
Отправить личное сообщение для Jack Посмотреть профиль Найти все сообщения от Jack
 
Регистрация: 17.07.2011
Сообщений: 14

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

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

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

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

Код:
// комментарий
// ещё какая то инаформация
// и т.д.
ComandLine 12 99 66 abc;
Ответить с цитированием
  #2 (permalink)  
Старый 23.09.2017, 16:43
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Jack, читай про флаги.
Ответить с цитированием
  #3 (permalink)  
Старый 23.09.2017, 16:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>
Ответить с цитированием
  #4 (permalink)  
Старый 23.09.2017, 17:19
Интересующийся
Отправить личное сообщение для Jack Посмотреть профиль Найти все сообщения от Jack
 
Регистрация: 17.07.2011
Сообщений: 14

рони,
Результат получился же
Цитата:
ComandLine 12 99 66 abc;
ComandLine 12 99 66 abc;
ComandLine 12 99 66 abc;
ComandLine 12 99 66 abc;
А комментарии ?
Ответить с цитированием
  #5 (permalink)  
Старый 23.09.2017, 17:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Jack,
вам какой результат нужен?
Ответить с цитированием
  #6 (permalink)  
Старый 23.09.2017, 18:20
Интересующийся
Отправить личное сообщение для Jack Посмотреть профиль Найти все сообщения от Jack
 
Регистрация: 17.07.2011
Сообщений: 14

рони,
Ок, видимо плохо объяснил, что нужно:
текст
Цитата:
кеуцке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;
Ответить с цитированием
  #7 (permalink)  
Старый 23.09.2017, 18:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>

Последний раз редактировалось рони, 23.09.2017 в 19:42.
Ответить с цитированием
  #8 (permalink)  
Старый 23.09.2017, 19:15
Интересующийся
Отправить личное сообщение для Jack Посмотреть профиль Найти все сообщения от Jack
 
Регистрация: 17.07.2011
Сообщений: 14

рони, Спасибо большое !!! Очень помог !!!!
Ответить с цитированием
  #9 (permalink)  
Старый 23.09.2017, 19:19
Интересующийся
Отправить личное сообщение для Jack Посмотреть профиль Найти все сообщения от Jack
 
Регистрация: 17.07.2011
Сообщений: 14

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

Цитата:
^(ComandLine[^;]+);
Он тоже может записываться в несколько строк, а конец "командной строки" - это точка с запятой
Ответить с цитированием
  #10 (permalink)  
Старый 23.09.2017, 19:28
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по таблице и перестановка строк KemPavel jQuery 2 19.10.2015 12:28
Регулярные выражения фонарик Общие вопросы Javascript 29 16.03.2013 17:54
нежадные регулярные выражения KOLANICH Общие вопросы Javascript 2 12.12.2010 01:08
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35
поменять цвет у нескольких строк в таблице Root Элементы интерфейса 4 21.04.2008 10:30