Как сделать?
…
Нужна помощь с regexp’ами. Дело в том… …что я тупо не понимаю, как их использовать!
Примеров по их юзанию в коде нигде нет (или я их не нашёл), поэтому всё пробовал методом проб и ошибок. Создаётся ощущение, что интерпретатор QSP просто не воспринимает регекспы как часть кода, для него это только ошибки синтаксиса. Испытал всё - заключал в фигурные скобки, в кавычки, в ’ и ’, словом сделал всё, что только мог. Толку - 0. Подаю сигнал SOS и жду помощи. Если не утону к чертям в ближайшее время.
С уважением,
N_A
ДоБрЫй_МеДвЕдЬ,
Регэкспы используются с функциями $strfind, strcomp, arrcomp, strpos. В старой справке об этом говорится, в новой (сейчас посмотрел) нет перекрёстных ссылок между разделами. Собственно всё просто, но понимание приходит с опытом.
Показываю, как пользуюсь я.
Spoiler
Есть текст:
ДоБрЫй_МеДвЕдЬ:
Примеров по их юзанию в коде нигде нет (или я их не нашёл), поэтому всё пробовал методом проб и ошибок. Создаётся ощущение, что интерпретатор QSP просто не воспринимает регекспы как часть кода, для него это только ошибки синтаксиса. Испытал всё - заключал в фигурные скобки, в кавычки, в ’ и ’, словом сделал всё, что только мог. Толку - 0. Подаю сигнал SOS и жду помощи. Если не утону к чертям в ближайшее время.
нужно найти в нём слово из трёх букв.
Смотрим справку:
Справка:
\b - граница слова
\w - буква или цифра или символ подчёркивания
Пишем код:
! помещаем текст в переменную для удобства
$text="Примеров по их юзанию в коде нигде нет (или я их не нашёл), поэтому всё пробовал методом проб и ошибок. Создаётся ощущение, что интерпретатор QSP просто не воспринимает регекспы как часть кода, для него это только ошибки синтаксиса. Испытал всё - заключал в фигурные скобки, в кавычки, в ' и ', словом сделал всё, что только мог. Толку - 0. Подаю сигнал SOS и жду помощи. Если не утону к чертям в ближайшее время. "
! ищем слово из трёх букв с помощью strfind
$strfind($text,'\b\w\w\w\b')
В тексте будет найдено первое вхождение, соответствующее этому регэкспу, то есть слово “нет”.
Регэксп можно изменить. Во-первых, не обязательно писать \w\w\w — есть специальный квантификатор. Он позволяет указать число повторяющихся символов или групп (вхождений):
Справка:
** — n вхождений
Теперь регэксп выглядит так:
\b*\w*\b
используем:
$strfind($text,'\b\w{3}\b')
Или мы хотим найти слово из трёх букв, но чтобы второй символ не был буквой “е”. Тут справка нас немного запутает:
Справка:
[] — Класс символа
вот тут кусочек более понятный:
Справка:
Для описания таких подмножеств применяются символы квадратных скобок “[” и “]”. Квадратные скобки, встреченные внутри регулярного выражения считаются одним символом, который может принимать значения, перечисленные внутри этих скобок.
и ещё:
Справка:
Символ “^”. Если этот символ стоит первым в секции задания подмножества символов (и только в этом случае!) он будет рассматриваться как символ отрицания.
Таким образом, чтобы найти слово из трёх символов, второй из которых, не “e”, можно составить такое регулярное выражение:
\b\w[^е]\w\b
Используем:
$strfind($text,'\b\w[^е]\w\b')
Так мы найдём слово “или”.
Вообще, с помощью метасимвола \w мы указывали, что нас устроит в слове или буква или цифра или символ подчёркивания, но что если у нас в тексте есть такие сочетания 1_г и мы не хотим их находить? С помощью тех же квадратных скобок можно указать наборы символов, среди которых нужно производить поиск:
\b[А-Яа-я]\b
Используем новые знания:
! найдёт слово "нет"
$strfind($text,'\b[А-Яа-я]{3}\b')
! найдёт слово "или"
$strfind($text,'\b[А-Яа-я][A-Да-дЖ-Яж-я][А-Яа-я]\b')
! исключил букву "ё" потому что маленькая "ё" приводит к ошибке компиляции регэкспа у меня
Ну а для более широкого понимания, как составлять регэкспы, нужно копать интернет.
Большое спасибо, Aleks! Вы не представляете, как я вам благодарен. :)
Отличный текст! Его хоть сейчас в документацию )
Nex,
да, я может в скором времени соберусь, добавлю в более развёрнутом виде на вики.
Всем привет! Такой вопрос - есть ли какой-нибудь способ сделать нормальный и красивый фон в классике? $BACKIMAGE как-то слишком убого получается.
Нету )
Снова обращаюсь к форуму за советом.
Надеюсь, ещё не не задолбал…
Можно ли сделать так, чтобы шрифт использовался в игре, но не был установлен на компьютере?
В классике - нельзя. Но можно положить шрифт в папку с игрой и попросить пользователя его установить )
В Навигаторе - можно через CSS.
Всем доброго времени суток. Есть идея: сделать отображение параметров персонажа в отдельном окне(через msg), окно открываться должно ссылкой из дополнительного окна описаний. Перепробовал уже массу вариантов, но ничего не получается Т_Т
Можете ли подсказать как сделать чтобы часы (время в игре) перемещались в каждой локации.
Ну то есть в одной локации 14:00,переместился в другую локацию там уже 14:10,но при этом оператор на время во второй локации писать не нужно
Можете ли подсказать как сделать чтобы часы (время в игре) перемещались в каждой локации.
Ну то есть в одной локации 14:00,переместился в другую локацию там уже 14:10,но при этом оператор на время во второй локации писать не нужно
Серый Кардинал,
чтобы на второй локации не писать, прибавляй время на первой перед переходом.
ACT 'Идти в школу'
время = время + 10
GOTO 'Школа'
END
Ну а в целом время с примерами смотри здесь - Игровое время
Nex,спасибо
Друзья! Я пока новичок в qsp. Делаю потихоньку свой проект, и у меня такая проблема: не могу найти хороший вариант реализации диалогов. Может кто-то что-то подскажет? Про пример с Арагорном я знаю, но он мне не подходит из-за того, что у меня в диалогах прописаны описания каких-то действий героев. Выкинув их, как мне кажется, игра потеряет долю описания, и, как следствие, атмосферы. Заранее благодарю всех. :)