• Страница 1 из 1
  • 1
Регулярные выражения, js
brainiac
Дата: Среда, 16.02.2011, 21:22 | Сообщение # 1
молчун
Группа: Пользователи
Пользователь №: 3749
Сообщений: 1
Дела такие: делаю подсветку кода для какого-то языка (это неважно), всё работает, но кроме одной ситуации, когда строка имеет вид:
Code
/* ' Комментарий */ 'и строка ';

После обработки получаем:
Code
<span class="comments">/* <span class="strings">' Комментарий */</span> '</span>и строка ';

А должно быть:
Code
<span class="comments">/* ' Комментарий */</span><span class="strings">'и строка '</span>;

Сам обработчик имеет вид (проблемный кусок): в data находится содержимое подсвечиваемого кода
Code
data = data.replace(/('[\s\S]*?')/gim,'<span class="strings">$1</span>');
data = data.replace(/(\/\*[\s\S]*?\*\/)/gim,'<span class="comments">$1</span>');

Вобщем класс comments (между /**/) - зелёный цвет, а strings (между ' ') - синий.
Пробовал писать так для определения strings:
Code
data = data.replace(/('(\*\/){0}[\s\S]*?')/gim,'<span class="strings">$1</span>');

Т.е. с (\*\/){0} указал что знаков */ быть не должно внутри....но не работает...в чём может быть проблема? Как исправить? А то после такой ошибочки все теги перепутываются и вообще ужасно. Надеюсь на помощь от профи и гуру этого дела =) Спасибо.
  
Aleko
Дата: Четверг, 17.02.2011, 10:45 | Сообщение # 2
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Это решается следующим путем. Сначала все комментарии в коде, в том числе и однострочные нужно заменить в исходном тексте на спецсочетания, например ~~~COMM_4~~~ , затем обработать все остальное, потом в самом конце вставить обратно комментарии уже с тегами.

Бесплатные обои.
  
Crasher
Дата: Четверг, 17.02.2011, 18:37 | Сообщение # 3
говорун
Группа: Проверенные
Пользователь №: 3179
Сообщений: 256
Получено оценок: 3
Идея пришла: после замены начала и конца комментария /* */ прогнать всю строку внутри комментария и заменить знаки ' на &#8242;



Сообщение отредактировал Crasher - Четверг, 17.02.2011, 18:41
  
  • Страница 1 из 1
  • 1
Поиск:
© Studioad.ru 2006 · 2010. Использование материалов форума на сторонних ресурсах без прямой обратной ссылки строго запрещено. Хостинг от uCoz.