[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярное выражение
SergeyZuzic
Есть алгоритм подсветки синтаксиса, но пара проблем:
  • 1) Разбиваем текст на строки
  • 2) Разбиваем строки по пробелам на слова
  • 3) Проходимся по массиву слов и проверяем if($code_word==$words[$k])
  • 4) Если найдено совпадение производим замену preg_replace("/{$words[$k]}/is", '<font color="' . $color['key_word'] . '">' . $words[$k] . '</font>', $code_word);
Private Function QQ() - работает
End Function - работает
Private Function QQ(ByRef Q) - не работает т.к. строка `QQ(ByRef`!=`ByRef`
... As Long) - не работает т.к. строка `Long)`!=`Long`
Я исправил так:
	if($code_word==$vb_words[$k] || 
(
substr($code_word, 0, -1)==$vb_words[$k] && substr($code_word, -1)==')') ||
(
substr($code_word, 1)==$vb_words[$k] && substr($code_word, 0, 1)==')') ||
substr($code_word, -5)=='ByRef' || substr($code_word, -5)=='ByVal') {

CStr(i) - не работает т.к. строка `CStr(i)`!=`CStr` ну короче много таких случаев

Теперь забыли всё, что сказано выше. Требуется написать регулярку которая будет пропускать "КлючСлово"
И если с одной стороны пробел то с др. может быть: , или ) или ]
Иначе если с другой стороны пробел то с др. может быть: ( или [
И в обоих случаях до `(` или после `)` может быть любой набор символов т.к. `ИмяФункции(ByRef`

Чтобы проще понять варианты:
Цитата
КлючСлово(
qwerty(КлючСлово
КлючСлово(q)

Но
Цитата
MyInteger не должен пройти нет скобки между My и Integer => это не ключевое слово




Спустя 1 минута, 24 секунды (1.04.2011 - 15:35) SergeyZuzic написал(а):
Можно разделить на 2 регулярки:
1 для КлючСлово( и КлючСлово(q)
2 через || для qwerty(КлючСлово (КлючСлово


Не силен в регулярках, но наверное что-то типо:
	if (preg_match("/^{$vb_words[$k]}(\(|\[|\,)[^\s]*$/i", $code_word)) {
print 'да';
} else {
print 'нет';
}


А методом от противного:
	if (preg_match("/^([^a-zA-zа-яА-я_])*CStr([^a-zA-zа-яА-я_])*$/is", ':CStr')) {
print 'да';
} else {
print 'нет';
}

Спустя 19 минут, 23 секунды (1.04.2011 - 15:54) YVSIK написал(а):
Пользователь №: 21675
На форуме: 11 месяцев, 25 дней

а до сих пор не научился формить свои кодинги
отметь и нажми на кнопки ну хоть PHP в верху!

Спустя 7 минут, 15 секунд (1.04.2011 - 16:02) SergeyZuzic написал(а):
YVSIK
Обычно пишу на форуме и сразу выделяю, а когда пишешь в блокноте (сообщение большое) нажимаешь ctrl+v и забываешь про выделить код... Как бы идет нарушение рефлекса )) Спасибо за замечание, так стало намного читабельние.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.