0 / 0 / 0
Регистрация: 28.06.2019
Сообщений: 15
|
|
1 | |
Найти в тексте все вхождения строки по шаблону30.03.2020, 17:52. Показов 1950. Ответов 16
Метки нет (Все метки)
Добрый день
Задача такая - найти в тексте все вхождения строки и сложить эти вхождения в массив Условия: 1. строка должна начинаться с цифры и заканчиваться цифрой. 2. в строке должны быть только цифры и два символа - * (умножить) и / (разделить). 3. пробельных символов в строке не должно быть. 4. количество цифр и указанных символов в строке не ограничено. Заранее благодарю за помощь.
0
|
30.03.2020, 17:52 | |
Ответы с готовыми решениями:
16
В тексте, содержащем несколько предложений, найти все вхождения заданного слова и вывести все включающие его предложения Найти в тексте все вхождения данного образца Найти в тексте все вхождения данного образца В тексте, содержащем несколько (много) предложений, найти все вхождения заданного слова и распечатать все ключевые его предложения. |
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
|
|
30.03.2020, 18:45 | 2 |
Одновременно? Т.е., вот такая запись верна?
12*4/67 Или по отдельности? 12*467 и 12/467
0
|
0 / 0 / 0
Регистрация: 28.06.2019
Сообщений: 15
|
|
30.03.2020, 19:38 [ТС] | 3 |
Да, верна
1/2*5*7/8*87 - и такая верна
0
|
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
|
|
30.03.2020, 19:42 | 4 |
alex291, ~^\d+(?:\*\d+|/\d+)*\d*$~m
0
|
0 / 0 / 0
Регистрация: 28.06.2019
Сообщений: 15
|
|
30.03.2020, 19:53 [ТС] | 5 |
Спасибо, конечно, только как это в массив собрать?
Такая конструкция не работает preg_match_all("~^\d+(?:\*\d+|/\d+)*\d*$~m", $text, $matches);
0
|
0 / 0 / 0
Регистрация: 28.06.2019
Сообщений: 15
|
|
30.03.2020, 20:02 [ТС] | 7 |
Исходный текст "(5+7)*5+7/8*8+8*(9/3*4/2-7)";
Регулярное выражение должно вернуть массив из двух элементов array[0] = '7/8*8'; array[1] = '9/3*4/2';
0
|
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
|
|
30.03.2020, 20:18 | 8 |
Исходный текст НЕ соответствует описанию задачи в первом посту, т.к. кроме допустимых, содержит символы, которые небыли перечислены в списке разрешённых:
1. строка должна начинаться с цифры и заканчиваться цифрой. В вашем случае в начале и в конце - что, цифры ? 2. в строке должны быть только цифры и два символа - * (умножить) и / (разделить). 4. количество цифр и указанных символов в строке не ограничено. Добавлено через 7 минут ~\d+(?:\*\d+|/\d+)+~ PHP демо
1
|
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
|
||||||
30.03.2020, 20:20 | 9 | |||||
0
|
0 / 0 / 0
Регистрация: 28.06.2019
Сообщений: 15
|
|
30.03.2020, 20:30 [ТС] | 10 |
Большое спасибо
Добавлено через 6 минут Ваш вариант, к сожалению, не комильфо возвращает ответ Array ( [0] => Array ( [0] => 7/88*8 [1] => 9/3*4/2 ) [1] => Array ( [0] => 88* [1] => 4/ ) ) Вот у Строителя правильно Array ( [0] => Array ( [0] => 7/88*8 [1] => 9/3*4/2 ) )
0
|
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
|
||||||
30.03.2020, 20:39 | 11 | |||||
Сообщение было отмечено Строитель как решение
Решение
alex291, если нужно комильфо, то лучше будет получать элементы в одномерном массиве:
0
|
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
|
||||||
30.03.2020, 20:45 | 12 | |||||
0
|
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
|
|
30.03.2020, 20:48 | 13 |
0
|
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
|
|
30.03.2020, 21:15 | 14 |
0
|
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
|
|
30.03.2020, 21:47 | 15 |
Хорошо ) Но в таком случае, я бы хотел сперва увидеть ваши аргументы, т.к. вы заявили, что ваш вариант лучше, но не потрудились пояснить причину.
0
|
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
|
|
30.03.2020, 22:07 | 16 |
\*\d+|/\d+
отличается от \d+[*\/] что в вашем случае при чило + (5+)поиск вернется назад на одну позицию назад но суть не в этом, "так лучше" я написал про свой код не ваш,
0
|
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
|
|
30.03.2020, 22:45 | 17 |
Как вы это определили?
Дак это было итак понятно, это не суть разговора.
Добавлено через 10 минут Дабы тема не разрослась в бесполезный офтоп, я напишу вам, почему ваш вариант не лучше, а хуже. Во первых, он не много медленнее (а в случае поиска более чем на одной строке - ни не много, а довольно медленнее). Во вторых - затратнее по памяти, т.к. захватывает лишние совпадения, которые не будут использоваться алгоритмом программы. Проверить это вы всегда можете на сервисе https://regex101.com/
1
|
30.03.2020, 22:45 | |
30.03.2020, 22:45 | |
Помогаю со студенческими работами здесь
17
Не могу получить все вхождения по шаблону. Найти все вхождения строки s в t Найти все вхождения строки T в строке S Найти все вхождения строки Т в строке S Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
|
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке
В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
|
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
|
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins
В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
|
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
|
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента!
4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве).
Первое вводное занятие. . .
|
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
|
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений
Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
|