Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 108

Некоректно работает регулярное выражение

31.10.2016, 23:47. Показов 2717. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Как доработать это регулярное выражение под следующий файл(во вложении)?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$file = file('data.txt');
foreach($file as $k => $v){
if(!preg_match("~^(?:(?:[0-9]|[12][0-9]|3[0-1])\.
                           (?:0[0-9]|1[0-2])\.
                           (?:\\d{2})/
                           (?:0?[0-9]|1[0-9]|2[0-3])\:
                           (?:[0-5][0-9])/
                           [\\wа-Я]+\\s*)$~xi",$v))
{
    echo "Ошибка в строке: ".($k+1);
}       else echo $v;
        echo "<br>";
}
На данный момент проблема с распознаванием русских символов и строк в третей колонке каждой строки, и годом в 1й колонке.
Миниатюры
Некоректно работает регулярное выражение  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.10.2016, 23:47
Ответы с готовыми решениями:

Не работает регулярное выражение
Ребзи, не работает простое регулярное выражение: $content = 'какая то строка с запятыми, точками, слэшами/'; ...

Не работает регулярное выражение
Здравствуйте! В общем так, ниже демонстрационный пример. Обратить внимание стоит на тег &lt;ala&gt; внутри которого есть тег...

Не работает простое регулярное выражение
Здравствуйте! У меня не работает простое выражение: if (eregi('S{20}', $ad_title)) error('ERROR');Т.е. оно должно ловить слова...

23
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.11.2016, 10:02
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от полудух Посмотреть сообщение
что надо непременно \\d
где я утверждал, что это обязательство? Впрочем, не важно.
Цитата Сообщение от полудух Посмотреть сообщение
да всё там же, где влезли со своими двойными слэшами, когда я говорил про \d
это вы влезли со своим одинарным слешем там, где человек написал с двойным, не надо наговаривать.
И это вы вцепились в \d, а не я. Я говорил про использование двойных слэшей вообще. И говорил, что используя одинарный слэш вы просто полагаетесь на то, что PHP достаточно умный для определения того, что это, все-таки, последовательность PCRE, а не последовательность самого PHP. И то, как я делаю, было ответом на то, что якобы я должен запутываться, а никак не то, что все должны так делать (в отличии от вашей точки зрения - "я пишу с одним слэшем, значит, все так же должны делать! "). И вы уж определитесь с тем, что вы хотите. Вы спрашивали, зачем дублировать слэш - вам ответили - и вы начинаете наезжать со своим "ты не правильно пишешь, делай, как я!". Введут в PHP последовательность \d и перестанет работать ваша регулярка. Не введут - и фиг с ней. Мне абсолютно все равно, я пишу так, как я привык, я не заставляю вас писать также, так зачем вы мне указываете, что я должен писать по-другому, да еще и с голословными неверными утверждениями:
Цитата Сообщение от полудух Посмотреть сообщение
надо будет мне найти \d, как 2 разных символа рядом, тогда и заэкранирую слэш, а так то нафига мне \\d писать вы так и не ответили
Хоть бы протестили, прежде чем писать.
Цитата Сообщение от полудух Посмотреть сообщение
\\\\d - ЧТО он будет искать??
Опять же, хоть бы протестили, прежде чем писать. Я уже ответил другому человеку, что можно 3 слеша. А можно и четыре. И искать он будет два разных символа - символ слэша и символ d.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
function boolStr($val) {
    return $val ? 'true' : 'false';
}
 
$rArr = ['4 слэша' => '~^\\\\d$~', '3 слэша' => '~^\\\d$~', '2 слэша' => '~^\\d$~'];
$sArr = ['1 слэш ' => '\d', '2 слэша' => '\\d'];
 
foreach($rArr as $kR => $r)
    foreach($sArr as $kS => $s)
        printf('%8s =~ %8s = %s%s', $kR, $kS, boolStr(preg_match($r, $s)), PHP_EOL);
http://ideone.com/oT9Z7q

В общем, все понятно, спор ради спора. Мне поднадоело в этом участвовать, поэтому на следующие подобные "наезды" я отвечать не буду.
1
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
02.11.2016, 11:10
Цитата Сообщение от KOPOJI Посмотреть сообщение
Мне поднадоело в этом участвовать, поэтому на следующие подобные "наезды" я отвечать воду лить не буду.
fixed
да вполне ожидаемо
вместо ответа на чётко поставленный вопрос какие-то невнятные ссылки уводящие в сторону
в документации чётко описаны экранирующие последовательности
а про ваши выдумки нет ничего.

мой вопрос был:
Цитата Сообщение от полудух Посмотреть сообщение
и зачем \\
и относился он непосредственно к \\d
ваш ответ:
Цитата Сообщение от KOPOJI Посмотреть сообщение
потому что так правильно Первый слэш - для PCRE, сама последовательность, второй - экранирование строки PHP. С примерами - Что обозначает эта строка
ваше утверждение НЕВЕРНО.
ничего кроме флуда и пустобрехства я тут так и не услышал и, очевидно, не услышу, тема закрыта.
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.11.2016, 11:16
полудух, правьте свои фразы, а не чужие.
Цитата Сообщение от полудух Посмотреть сообщение
ничего кроме флуда и пустобрехства я тут так и не услышал и, очевидно, не услышу
именно так. Только это не ко мне относится. Ну да ладно

Не по теме:

Цитата Сообщение от полудух Посмотреть сообщение
тема закрыта
а это не вам решать :pardon:

1
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
19.01.2017, 05:27
В документации ( http://php.net/manual/en/regex... escape.php )
нет рекомендаций использовать двойные слэши вместо одного
при написании PCRE-метасимволов ( \d \w \t \n etc) в шаблоне регулярного выражения.

А вот что там есть:

Escape sequences
Note:
Single and double quoted PHP strings have special meaning of backslash.
Thus if ⟍ has to be matched with a regular expression ⟍⟍, then "⟍⟍⟍⟍" or '⟍⟍⟍⟍' must be used in PHP code.

НМВ это является PHP-костылём и безобразием, потому что в синтаксисе PCRE
такая фича ( четыре слэша вместо двух) отсутствует и если ты забил болт на данный синтаксис,
то и не называй его в документации «PCRE regex syntax», a назови как-нить ещё.

То, что синтаксис `\\d` внутри первого аргумента(строка-шаблон) preg_match отрабатывает так же, как и `\d`,
скорее всего является побочным эффектом, а не прозорливостью разработчика в смысле светлого будущего php.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2017, 05:27

Не работает правильно регулярное выражение
Есть такая регулярка. \b^{3,10}\b Она проверяет слово на то что может начитаться только с 1,3,5, может содержать в себе...

Не работает регулярное выражение для странички в utf-8 при парсинге странички с кодом в utf-8
Здравствуйте! Сточил мозг в раздумъях и решил к Вам обратиться, может поможете. Загружаю страничку сайта с целью спарсить определенные...

Регулярное выражение
3,2,,,, 1,2,3,4,5 1,3,5,4,2 5,3,5,6,4 выражение : ,,,, возвращает 3 последних ряда. выражение : ,,?,?,? находит все 4...

Регулярное выражение. >,<,=
Нужно выбрать из таблицы только числа больше 1.000 Пишу : &lt;center&gt;&lt;b&gt;\.{3}&lt;\/td&gt; Но теряю 1.999, а мне нужно все включая 1.001 и...

Регулярное выражение
Есть строка вида:&quot;12345678,54543234,01928374&quot; Числа из восеми цифр идут через запятую. Нужно выражение, которое проверит, что это...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru