Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762

Разобрать строку на составляющие

14.08.2013, 19:37. Показов 1170. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть исходная строка, которая может отличаться,
пример 1
Code
1
2
3
4
01 Плоечка   Отметить нападениеНабег на 00 Сереееееженька
‎(-77|83) Фаланга  Мечник    Следопыт    Тевтатский гром   Друид-всадник   Эдуйская конница Таран  Требушет    Предводитель    Поселенец  Герой
Войска     0   0   0   10  0   0   0   1   0   0   0
Прибытие    через 0:28:11 ч.в 18:57:37
пример 2
Code
1
2
3
4
5
6
Hardcore  Нападение на 00 Сереееееженька
‎(8|-36)‬‎ 
Войска    ?   ?   ?   ?   ?   ?   ?   ?   ?   ?   ?
Прибытие    
через 4:24:17 ч.
в 23:43:14
мне нужно из нее получить
( в 1 примере / во 2 примере) :
1. (01 Плоечка / Hardcore)
2. (Набег / Нападение)
3. (00 Сереееееженька / 00 Сереееееженька)
4. (**77‬‬|*-*83 / 8‬‬|*-*36)
5. (через 0:28:11 / через 0:28:11)
6. (в 18:57:37 / в 23:43:14)

Пояснения по пунктам:
1. Имя нападающего, начинается с начала строки, может состоять из одного и более слов, а также содержать в себе цифры, буквы латинского или русского алфавита. Окончание в первом примере является фраза "Отметить нападение", но во втором примере она отсутсвует.
2. Тип действия, здесь может быть либо "Набег" либо "Нападение"
3. Имя цели, здесь так же как и в первом пункте может состоять из одного и более слов, а также содержать в себе цифры, буквы латинского или русского алфавита. Перед началом обязательно следует тип действия (п.2) т.е слово Набег или Нападение, после окончания идут координаты (п.4).
4. Координаты, Заключены в круглые скобки разделенные между собой прямой чертой, могут состоять из 1,2,3 цифр со знаком минус или без него.
5. Время следуещее после слова "через".
6. Время следуещее после слово "в".

Кодировка utf8

Помогите, плиз, сделать нормальное регулярное выражение
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2013, 19:37
Ответы с готовыми решениями:

Разобрать строку с помощью регулярных выражений
Здраствуйте. Думаю многим приходилось сталкиваться с древовидной структурой каталогов....

Распарсить строку на составляющие
Я ввожу в консоль строку find file.txt и теперь мне нужно распарсить строку, на составляющие. 1 слово 0 это команда 2 слово и...

Разбить строку на составляющие
Всем здраствуйте. Нужна помощь,необходимо сделать программку которая бы обрабатывала таблицы,т.е. убирала лишние пробелы,заменяла...

4
15.08.2013, 12:20

Не по теме:

дык зобанят же. это ж трава

0
 Аватар для rus_dao
19 / 19 / 3
Регистрация: 26.07.2013
Сообщений: 61
15.08.2013, 12:23
посмотрите, было бы очень хорошо, если бы исходная информация была оформлена таблицей (с тегами <table><td><tr>) пользуясь XPATH можно было бы очень красиво распарсить

а так ваша инфа слегка нерегулярна кажется на первый взгляд...
0
15.08.2013, 12:28

Не по теме:

видно же -- человек не палится... просто форму копирнул из браузера, текстом. может вам еще и уникальные атрибуты с классами подавай?:) неее, все не так просто.

0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
15.08.2013, 18:21  [ТС]
Цитата Сообщение от rus_dao Посмотреть сообщение
посмотрите, было бы очень хорошо, если бы исходная информация была оформлена таблицей (с тегами <table><td><tr>) пользуясь XPATH можно было бы очень красиво распарсить

а так ваша инфа слегка нерегулярна кажется на первый взгляд...
Требования таковы что бы исходные данные были именно такими, что бы были теги, нужно открывать исходный код в браузере , а это не совсем приемлимо.
В принципе я распарсил эту информацию, но не при помощи регулярных выражений(никак не могу с ними подружиться), но хотелось бы более аккуратно все это сделать, а так получился гавнокод.
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
 
$input = '01 Плоечка Набег на 00 Сереееееженька
‎*(**77‬‬|*-*83‬‬)‬‎           
Войска  0  0  0  10  0  0  0  1  0  0  0
Прибытие через 22:39:00 ч.в 18:57:37';
 
$input = trim($input);
 
// Разбиваем по открывающейся скобке (
$temp = explode ('(', $input);
 
/* Координаты */
$coordinate = trim(array_shift(explode(')', array_pop($temp))));
/* ********** */
 
/* имена и тип */
if (strpos($temp[0], 'Набег'))
    $type = 'Набег';
elseif (strpos($temp[0], 'Нападение'))
    $type = 'Нападение';
 
$temp = explode($type . ' на' , $temp[0]);
 
$second_name = trim(array_pop($temp));
$first_name = trim(array_shift(explode('Отметить', $temp[0])));
/* ********** */
 
/* Время первое и второе */
$temp = explode(' ', trim(array_pop(explode('через', $input))));
$first_time = array_shift($temp);
$second_time = array_pop($temp);
/* ******************** */
 
echo '<br />';
echo 'coordinate '  . $coordinate  . '<br />';
echo 'first_time '  . $first_time  . '<br />';
echo 'second_time ' . $second_time . '<br />';
echo 'type '        . $type        . '<br />';
echo 'first_name '  . $first_name  . '<br />';
echo 'second_name ' . $second_name . '<br />';


Не по теме:

дык зобанят же. это ж трава
не забанят это не бот

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.08.2013, 18:21
Помогаю со студенческими работами здесь

Разложить строку на составляющие
Приветствую, ребята, что-то никак не могу сообразить как сделать. Есть текстовый файл, в нем данные, например. 5552145=5484654664 ...

Строку нужно разделить на составляющие
Есть строка &quot;ас123фер4.5а&quot;, нужно вывести ас 123 фер 4.5 а Помогите пожалуйста!

Разбить строку (IP-адрес) на составляющие
Всем привет ! Подскажите как можно разбить строку с айпи адрессом на 4 части ? например есть у меня строка в которой значение 127.0.0.1 мне...

Как строку вида 129Mb разбить на составляющие 129 и Mb?
Собственно вопрос в названии темы

символы, составляющие строку, начинают падать по одному в случайном порядке из-за верхнего края изображения
«Падающие буквы». Имеется возможность ввести текстовую строку. При нажатии на кнопку символы, составляющие строку, начинают падать по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru