- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
preg_replace ("~[^tex]~", "", "ishodnaya tex stroka tex"); // удаляет из строки все символы кроме "t", "e" и "x"Как правильно составить паттерн, чтобы удалялись не отдельно символы кроме перечисленных, а удалялось все кроме последовательности этих символов "tex"?
я так понимаю вам нужно получить 'tex', если он присутствует в строке? или нужно получить все вхождения 'tex'?
Нет, мне необходим именно паттерн
Я понимаю, то что привел в примере может реализовыватся и другими способами, примеров может быть много.
[^tex] - это любой символ кроме "t", "e" и "x"
паттерн, который интересует - это любая последовательность символов, кроме "tex"
Вот еще пример:
$text=preg_replace('~<a[^>]*href=.?http.?://[^>]*>([^</a]*)</a>~i','$1', $text);Удаление ссылок.
[^</a] - любой символ кроме "<", "/" и "a"
это работает, когда в качестве ссылки только текст, а если там картинка или BB-коды, паттерн не подойдет
насколько хватает моих знаний в регулярках насколько я понимаю задачу, то она неразрешима. Через регулярные выражения нельзя получить последовательность, которой нет :)
Опишите задачу полностью, а не ваш вариант её решения и может быть получится вам помочь :)
паттерн, который интересует - это любая последовательность символов, кроме "tex"
если я правильно понял, то:
/(?!abc)(def)/i - захватит строку 'def', перед которой нет строки 'abc'
add: похоже неправильно я понял :D
паттерн, который интересует - это любая последовательность символов, кроме "tex"
Это не задача - это ваш вариант решения. В общем, ладно, когда решите напишите решение - я так понимаю помощь вам не нужна.
Лично мне помощь не нужна, наставления тем более :) Я вообще мимо проходил :D
ТС писал:
[^tex] - это любой символ кроме "t", "e" и "x"
паттерн, который интересует - это любая последовательность символов, кроме "tex"
Я написал относительно в тему(?), что отрицать строку в регэкспах можно конструкцией (?!str) На этом мысль оборвалась :)
Лично мне помощь не нужна, наставления тем более
Сорри, промазал :)
update: аж, стыдно стало, нипрочто человека обидел :)
Такое устраивает ?
preg_match_all("(tex)", "ishodnaya tex stroka tex", $out);
echo implode($out[0]);
Спасибо всем за ответы.
Конкретной задачи нет, просто в работе довольно часто с такими выражениями сталкиваюсь (когда необходимо обрабатать только ту часть строки, которая не содержит определенную последовательность символов), и все время приходится решать задачу используя обходные пути, для каждого слачая свои. А при наличии такого паттерна все решалось бы одной строкой.
Спасибо, сейчас копаю в этом направлении, что то типа ((?!abc).)*
echo implode($out[0]);
Это тоже один из вариантов решения конкретного примера
его даже лучше на строковых функциях реализовать.
В случае с
$text=preg_replace('~<a[^>]*href=.?http.?://[^>]*>([^</a]*)</a>~i','$1', $text);он уже безполезенчто то типа ((?!abc).)*
насколько я помню, в такого типа паттернах нужно указывать какой длины будет идти следующее за условием совпадение, так что в данном случае может не помочь. Но могу ошибаться именно в этом месте у меня в знаниях пробел.