Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.11.2014, 11:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

Регулярка для многострочного комментария
Помогите сделать регулярку для многострочного комментария...
Пока сделал так
<style type='text/css'>
span {
	color: green;
}
</style>
<pre id='test'>
AMCL ;Авторы;Мобильный клиент;;[ 10/09/2014 16:27 ]
 N ; * Включить установки мобильного клиента *
#define ABC 1 
n
 d CLR^ASYS()
 i i=0 w /cup(y,1),std d j krt s y=y+1 q
 /* s a=Locate(abc) */
 /// йцукенгшщзхъёфывап
 /* ролджэячсмитьбюЙЦУКЕНГШЩЗХЪЁФЫВАПРОЛДЖЭЯЧСМИТЬБЮ */
 /* йцукенгшщзхъёфывап d CLR^ASYS 
 ролджэячсмитьбюЙЦУКЕНГШЩЗХЪЁФЫВАПРОЛДЖЭЯЧСМИТЬБЮ */
 w /ed(2)
	j des ABCDq
 set x=10
 s y=1
 s o=##class(user.tmp).%New()
 /*
 s x=1
 s n=0
 */ 
 s:$d(@%zg@($g(%zn,0),%zz)) @%zz=@%zg@($g(%zn,0),%zz)
 s y=@glb@(10)
 s i=""
 /*
 d ad
 */
 w $j,$i,$zzu
 /* s a=$Locate(abc) */
 s f=$$Fld^ASYS
 w $$Cent^zfunc("",80)
</pre>
<script type='text/javascript'>
var o=document.getElementById('test');
var txt=o.innerHTML;
txt=txt.replace(/(\/\*[^\*\/]*\*\/)/g,'<span>$1</span>')
o.innerHTML=txt
</script>

Но это не сработает если внутри комментария будут символы * или /...
Ответить с цитированием
  #2 (permalink)  
Старый 07.11.2014, 11:45
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

Правда все это осложнится применением в парсере одного дельфийского компонента...
Но это уже вообще наши проблемы. Пока просто есть интерес в просто JS...
Ответить с цитированием
  #3 (permalink)  
Старый 07.11.2014, 12:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

ksa,
<style type='text/css'>
span {
	color: green;
}
</style>
<pre id='test'>
AMCL ;Авторы;Мобильный клиент;;[ 10/09/2014 16:27 ]
 N ; * Включить установки мобильного клиента *
#define ABC 1
n
 d CLR^ASYS()
 i i=0 w /cup(y,1),std d j krt s y=y+1 q
 /* s a=Locate(abc) */
 /// йцукенгшщзхъёфывап
 /* ролджэячсмитьбюЙЦУКЕНГШЩЗХЪЁФЫВАПРОЛДЖЭЯЧСМИТЬБЮ */
 /* йцукенгшщзхъёфывап d CLR^ASYS
 ролджэячсмитьбюЙЦУКЕНГШЩЗХЪЁФЫВАПРОЛДЖЭЯЧСМИТЬБЮ */
 w /ed(2)
	j des ABCDq
 set x=10
 s y=1
 s o=##class(user.tmp).%New()
 /*
 s x=1
 s n=0
 */
 s:$d(@%zg@($g(%zn,0),%zz)) @%zz=@%zg@($g(%zn,0),%zz)
 s y=@glb@(10)
 s i=""
 /* *****
 d ad
 */
 w $j,$i,$zzu
 /* s a=$Locate(abc) */
 s f=$$Fld^ASYS
 w $$Cent^zfunc("",80)
</pre>
<script type='text/javascript'>
var o=document.getElementById('test');
var txt=o.innerHTML;
txt=txt.replace(/(\/\*[\s\S]*?\*\/)/g,'<span>$1</span>')
o.innerHTML=txt
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 07.11.2014, 12:30
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

https://github.com/kobezzza/Escaper

На всяк случай оставлю тут
__________________
kobezzza
code monkey
Ответить с цитированием
  #5 (permalink)  
Старый 07.11.2014, 13:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

рони, с этого и начали... Но там видать "жадный" поиск стоит... Выделяет все от первого /* до последнего */
Ответить с цитированием
  #6 (permalink)  
Старый 07.11.2014, 13:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

Сообщение от рони
/(\/\*[\s\S]*?\*\/
Сработало!

Я пробовал вот как
/(\/\*[\s\S]*\*\/

Т.е. без ? знака... Даже предположить не мог, что он тут к месту, да еще и будет определяющим!
* ведь и так предполагает от 0 до любого количества... И ? там вроде как избыточен...

Как словами будет читаться твоя регулярка?
Ответить с цитированием
  #7 (permalink)  
Старый 07.11.2014, 13:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

ksa,
начать с комбинации символов/* затем найти все символы включая переводы строк, если таковые будут или нет, до первой комбинации */
Ответить с цитированием
  #8 (permalink)  
Старый 07.11.2014, 13:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

ksa,
Цитата:
? - "Если используется сразу после одного из квантификаторов *, +, ?, или {}, то задает "нежадный" поиск (повторение минимально возможное количество раз, до ближайшего следующего элемента паттерна),
http://javascript.ru/RegExp
Ответить с цитированием
  #9 (permalink)  
Старый 07.11.2014, 13:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

Сообщение от рони
задает "нежадный" поиск
Еще раз спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Яндекс.Деньги организуют в Петербурге школу для веб-разработчиков LinaKurkova Работа 0 15.05.2014 22:41
EruditionCMS - веб-приложение для создания и проведения тестирований mbcsoft Ваши сайты и скрипты 0 08.05.2014 13:12
Посоветуйте как улучшить код для работы с history api [ jquery + js + history api ] Geo Ваши сайты и скрипты 0 12.01.2014 00:41
Chrome плагин для ввода многострочного Javascript-кода almac Javascript под браузер 1 29.06.2012 12:41