i
Полезная информация
Свернуть
29.04.2024
ruensvdefrptesitzharnl

Ещё кусок дурдома (если интересно)

Ещё кусок дурдома (если интересно)

Пытаюсь найти в тексте локации. По алгоритму:

"в" + "слово с большой буквы"

Но есть готовые решения только или для поиска конкретных слов, или для чего-то общего. 

$needle = 'в А';
if (strpos($str, $needle) !== false) { echo "This returned true!";
}

 

Это конкретика. 

preg_match_all("~[в ][А-Я+]~iu", $str, $m); //
preg_match_all("~[в ][Х+]~u", $str, $m); //
preg_match_all("~[в ][А-Я]~u", $str, $m); //
// ни один вариант не работает!
echo count($m[0]) . ' групп слов<br />';
print_r($m);
echo "<br>";

 

Тут выше даны три варианта, ни хрена не работает, выдает только большие буквы. То есть, "в" не видит, то, что дальше за большими буквами, не видит:

10 групп слов
Array ( [0] => Array ( [0] => У [1] => Х [2] => Я [3] => Е [4] => М [5] => Я [6] => Я [7] => Х [8] => К [9] => Х ) )

 

if(preg_match('/[в А-Я]+/u', $str)){
echo '!!!!!!!!!!!!!';
}

Вот эта хрень видит отдельные символы, но не целое сочетание "в А-Я+" То есть, если "в А-Я +" заменить на "№№№№№№№№" - не увидит. А если добавить в555 А-Я - нет такого в тексте - все равно видит, ненуачо, "в" есть, большие буквы есть...

 

Короче, пытаюсь что-то придумать с синтаксисом. Можно, конечно, не заморачиваться, использовать большой страшный код репетитора, сделать таблицу из одной буквы "в" и говорить программе - если есть слова из таблицы найденных в тексте имен и слова из таблицы "в" - занеси еще в какую-нибудь таблицу.

Но это уже извращение какое-то... Хотя может, другие варианты еще корявее...

 

0
Aagira Aagira 9 месяцев назад #
Маш, а в прошлом дурдоме я тебе ссылку давала, ты оттуда брала?
0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #
Там ссылка на замену знаков, а я ищу поиск знаков…
0
Aagira Aagira 9 месяцев назад #
А в поиске не те же знаки участвуют?

К слову: можно я переименую твою запись «Проба», чтобы было ясно о чем это?
0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #

Можно переименовать...

0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #

в поиске похожая ситуация.

в замене: "." и «А-Я» на " "

В поиске: «в» и «А-Я»

И вот что не работает: я ищу не сочетание в-пробел-большие буквы а сочетание в-пробел-большие буквы и слово с большой буквы. То есть не А-Я а А-Я+

preg_match_all("~[в ][А-Я]~u", $str, $m);

И как присобачить этот плюс, не знаю.

0
Aagira Aagira 9 месяцев назад #

Но там же должно как-то слово определять. То есть, либо искать до пробела или иного знака, либо добавить к запросу поиска еще и строчные буквы.

0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #

Вообще это делается: А-Я+ только тут с синтаксисом непонятно что.

Или я ошибаюсь, и правильно да, до пробела со строчными...

Так, что ли...

preg_match_all("~[в ][А-Я][а-я][ ]~u", $str, $m);

чёт не то… нет, четыре условия сразу не возьмет

0
Aagira Aagira 9 месяцев назад #

В скобки 4 условия загнать если?

0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #

вот-вот, не берет четыре условия

0
Aagira Aagira 9 месяцев назад #

А сколько берет? Попробуй все в одни скобки загнать квадратные.

Кстати, почему у тебя в этом случае все выражение в двойных кавычках?

0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #

А в каких надо? На каком-то форуме был такой вариант, и он работал.

Загнать все под одни скобки — не работает

0
Aagira Aagira 9 месяцев назад #

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

0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #

вообще я сейчас сделала вариант с огромной страшной программой репетитора, где заставила программу искать уже найденные и помещенные в таблицу названия с большой буквы + предлоги из другой таблицы, где оставила в предлогах «в» «на» и еще немного

Хотя если интересно продолжить разбор этого вопроса, можем продолжить...

0
Aagira Aagira 9 месяцев назад #

Ну, если устраивает, то ок.

0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #

Вообще там дофигища вопросов. Например, как прога поймет, что герой переместился в какое-то место? логично: Имя героя + глагол движения + Название локации.

Но глаголов-то до фига. Я их пытаюсь поделить на таблицы — завершенные, незавершенные, по родам, по временам...

И получается два варианта:

искать в тексте глаголы движения по принципу шариться по всем таблицам, ища глаголы, где в столбце «группа глагола» стоит 1 — группа движения.

Или сделать отдельную таблицу с глаголами движения, всеми, которые придут на ум. Плюс метода - не надо распихивать по таблицам. Минус метода — на хрена тогда таблицы...

0
Aagira Aagira 9 месяцев назад #

Почему бы тебе не прописать обозначения действий? Пиши программу как игру. Если герой перемещаться пошел, то включится функция перемещения, которая затребует начальную локацию и конечную. Ну и наоборот, если ты про читалку сейчас. Если включился глагол перемещения, то функция будет ждать конечной локации, пока ее не получит, а если внезапно локация поменялась, то функция будет подразумевать, что перемещение произошло. Ну как-то так себе представляю это. Главное — чтобы эти сведения держались где-то за кадром все время.

Зачастую и человек, текст читая, хрен поймет где кто сейчас находится. В этом случае, программа будет посовершеннее. Можно даже ввести некие условные координаты, которые будут подставляться в функцию, если положение персонажей долгое время не менялось.

0
Aagira Aagira 9 месяцев назад #

В условных координатах может быть в качестве конечной локации — «неизвестное направление», например. Так что, читая текст, программа так и напишет внутри себя: ушел в неизвестном направлении.

0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #

Доля правды есть, но может быть: если внезапно локация поменялась, то функция будет подразумевать, что перемещение произошло.

Хорошо сейчас в Баскервилль-холле… А в Лондоне дожди.

Здесь две локации, но перемещения нет.

0
Aagira Aagira 9 месяцев назад #

Значит, программа решает, что пофиг, где это.

Похожие темы:

Это вторая из 3-х финальных глав. В дальнейшем будут добавляться новые главы в промежуток перед эти...
16:05
25
Сказ про то, как меня арестовали в Великобритании. Быль.   Это история о том, как аглицкая п...
Не спеша пишу повесть с лаконичным названием "42 километра". Сюжет прост и не оригинален на первый в...
15:28
6
Раздалось вежливое покашливание и Барт с неудовольствием взглянул на рыжеволосого крестьянина, смуще...
20:15
28

Все представленные на сайте материалы принадлежат их авторам.

За содержание материалов администрация ответственности не несет.