|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.03.2021, 14:47 | #1 |
Новичок
Джуниор
Регистрация: 19.03.2021
Сообщений: 1
|
Php регулярные выражения
Добрый день! Только начал изучать Регулярные выражения, прошу совета. Задача, в принципе, простая но уже вторую неделю никак не получается ее решить.
Задача: Найти в тексте из примера все числа в квадратных скобках: 1) Числа, которые больше нуля 2) Группы чисел, написанные через запятую найти отдельно 3) Число-число считать одним числом Все должно выполняться одним регулярным выражением. Вот пример текста:" ОБОСНОВАНИЕ По данным на 16 сентября 2020 г., общее число заражённых COVID-19 во всём мире составило 29 155 581 человек, включая 926 544 летальных исхода [ 1 ]. Влияние окончания периода летних отпусков и возобновления работы учебных заведений на течение эпидемии ещё не проявилось в полной мере. Тем не менее если ситуация будет развиваться по сценарию интенсивного распространения инфекции, существует вероятность возникновения второй волны [ 2, 3,4 - 7 ]. С ростом числа новых случаев Израиль стал первой развитой страной, которая возобновила общенациональный карантин [3]. В Москве впервые с 30 июня 2020 г. регистрируется устойчивый рост числа случаев заражения инфекцией SARS-CoV-2. Прогнозируемая нагрузка на систему здравоохранения в связи с эпидемией может быть оптимизирована благодаря эффективным и безопасным инструментам сортировки пациентов, помогающим решить вопросы о необходимости госпитализации или проведения дообследования. Ряд лабораторных параметров, таких как определение вирусной нагрузки методом полимеразной цепной реакции с обратной транскрипцией (ОТ-ПЦР) [4-5], подсчёт количества тромбоцитов [5], содержание D-димера в крови [6] и другие [ -7], позволяют оценивать стадию и тяжесть заболевания. Однако основным проявлением, влияющим на течение заболевания, является респираторная симптоматика. Это делает исследование лёгких при помощи компьютерной томографии (КТ) и ультразвукового исследования (УЗИ) одним из ключевых методов определения тяжести состояния пациента [8-10, 11, 12-13 ]. КТ обладает высокой чувствительностью для обнаружения признаков поражения лёгочной ткани, ассоциированных с COVID-19 [9, 10]. В связи с этим ряд экспертов рассматривает КТ в качестве диагностического стандарта для этого заболевания: в частности, в период московского карантина КТ стал одним из ключевых инструментов диагностики и сортировки пациентов [10]. К сожалению, КТ не является широкодоступным методом, а также обладает лучевой нагрузкой. УЗИ лёгких способно компенсировать данные недостатки, являясь общедоступным, мобильным и безопасным подходом. Это делает его особенно актуальным для применения у беременных женщин, детей и тяжелобольных лежачих пациентов. Возможность применения УЗИ лёгких при COVID-19 исследовали в недавних систематических обзорах [11, 12]. Однако на сегодняшний день имеющихся научных данных недостаточно для того, чтобы чётко очертить его функциональность для принятия клинических решений в зависимости от тяжести заболевания [13,14]. Для оценки чувствительности и специфичности УЗИ при различных степенях поражения изучили опубликованные работы, посвящённые сравнению УЗИ и КТ лёгких у пациентов с COVID-19. МЕТОДЫ Данная работа написана в соответствии с принципами PRISMA в отношении качества представления информации о результатах систематических обзоров и метаанализов работ, посвящённых оценке медицинских вмешательств [14]." Опробую я это все при помощи сайта : https://regex101.com/ с настройкой PCRE2 (PHP>=7.3)... Вот до чего дошел сам: (\[\s{1,10}\d\s{1,10}\]) (\[\s{1,10}\d.\s{1,10}\d.\d\s{1,10}.\s {1,10}\d\s{1,10}\]) (\[\d{1,10}\]) (\[\d.{0,10}\]) (\[.{1,20}\]) - находит вообще все числа \[.{1,20}\] -находит все диапазоны со скобочками в тексте очень грубо ( не надежно) жадный \[.*?\] - все диапазоны ленивый [ 1 ] [ 2, 3,4 - 7 ] [3] [4-5] [5] [6] [ -7] [8-10, 11, 12-13 ] [9, 10]. [10] [11, 12] [13,14] [14] \d[1-9]- любое число от 1до 9 var pattern = /^[1-9]\d*$/; //если не считать 0..015 за число 15 var pattern = /^0*[1-9]\d*$/; //если считать 0..015 за число 15 \d(?=\])- любое число только если после него идет знак ] x(?!y) - Соответствует 'x' только если за 'x' не следует 'y'. Это называется отрицательное упреждение. Например, /\d+(?!\.)/ соответствует числу только если за ним не следует десятичная точка. Регулярное выражение /\d+(?!\.)/.exec("3.141") сопоставит '141' но не '3.141'. Новый апдейт: \d(?=[\],\s\-\d{1,9}]) \d{1,9}(?=[\],{1,9}\s{1,9}\-{1,9}\d{1,9}]) \d{1,9}(?=[\],{1,9}\s{1,9}\-{1,9}\d{1,9}\.]) \d{1,9}(?=[\],{1,9}\s{1,9}\-{1,9}]) \d+(?=[\],+\s+\-+\d+\.+]) Поехали дальше... Найти в тексте из примера все числа в квадратных скобках: \d+(?=\]) Все числа, которые больше нуля в квадратных скобках: \[1-9]*(?=\]) Группы чисел, написанные через запятую найти отдельно \d*(?=[,]) Число-число считать одним числом \d[1-9]*-\d[0-9]* либо так: [1-9]{1,9}-[0-9]{1,9} Но, все равно, полученное выражение не отвечает поставленной задаче. Прошу помочь, или хотя бы подсказать где искать ответ. Что я делаю не так? |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Регулярные выражения(в PHP) | kata.m | Помощь студентам | 4 | 03.05.2016 19:46 |
PHP - регулярные выражения. | SoftKoc | PHP | 12 | 27.10.2012 14:21 |
Регулярные выражения в PHP | ZET78 | PHP | 1 | 31.10.2010 20:51 |
Регулярные выражения PHP | russian-stalker | PHP | 8 | 11.04.2010 17:46 |
Регулярные выражения. (PHP) | slavec | PHP | 1 | 10.03.2010 20:59 |