MySQL - регулярное выражение для границы слова, исключая подчеркивание (пунктуация соединителя)

Я использую границу слова регулярного выражения \b и пытаюсь сопоставить слово в следующем предложении, но результат не тот, что мне нужен. Соединительные знаки препинания (например, подчеркивание) не считаются границей слова.

Предложение: ab﹎cd_de_gf|ij|kl|mn|op_

Регулярное выражение: \\bkl\\b

Однако de не соответствует.

Я попытался обновить регулярное выражение, чтобы использовать пунктуацию соединителя Unicode (это требование продукта, поскольку мы также поддерживаем языки CJK), но это не работает.

Регулярное выражение: (?<=\\b|[\p{Pc}])de(?=\\b|[\p{Pc}])

Что мне здесь не хватает?

Примечание: кажется, что (?<=\\b|_)de(?=\\b|_) работает для знаков подчеркивания, но мне нужно, чтобы регулярное выражение работало для всех знаков пунктуации соединителя.

Заранее спасибо !!

Попробуйте: (?<![[:alnum:]])de(?![[:alnum:]])

anubhava 04.10.2022 12:52
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
3
1
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Для соответствия любым знакам пунктуации соединителя вам нужно \p{Pc}:

(?<=\\b|\\p{Pc})de(?=\\b|\\p{Pc})

ПРИМЕЧАНИЕ. \p{Pc} также может быть записано как [_\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F], которое соответствует всем этим 10 символам.

О верно !! В моей первоначальной попытке я забыл экранировать \p{Pc}. Спасибо. Это сработало

Akshay Goyal 04.10.2022 14:18

На основе описанного вами варианта использования вы можете упростить регулярное выражение до:

(?<![[:alnum:]])de(?![[:alnum:]])

вместо того, чтобы пытаться сопоставить границы слов, символы пунктуации юникода и т. д.

Это будет соответствовать de, если за ним не следует или не предшествует какой-либо буквенно-цифровой символ.

Другие вопросы по теме