powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Непонятки с регулярным выражением
2 сообщений из 2, страница 1 из 1
Непонятки с регулярным выражением
    #34543204
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, есть строка

12=11(1)1122X 12X21

(Возможные значения в каждой позиции до пробела 1, 2, X, =).

Есть регулярка для ее проверки... которая не работает
Вот это
Код: plaintext
select '12=11(1)1122X 12X21' ~ '^(((?=[12X=()]{13})(?!.{14})[12X=]*\\([12X]\\)[12X=]*) ([12X]{5}))$'
Возвращает false

Хотя вот это
Код: plaintext
select '12=1(X)11122X' ~ '^(((?=[12X=()]{13})(?!.{14})[12X=]*\\([12X]\\)[12X=]*))$'
и вот это
Код: plaintext
select ' 12X21' ~ '^( ([12X]{5}))$'
По отдельности дает true

Что не так?
...
Рейтинг: 0 / 0
Непонятки с регулярным выражением
    #34543950
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам дурак.
А все почему - потому, что регулярка была написана для джавы и с использованием look backward, а в постгресе ее нет, пришлось переделывать на look ahead, и не учел, что в этом случае надо кроме первых 13ти символов учесть, что дальше должен быть пробел и другие символы...
В общем вот верная

Код: plaintext
1.
select '12=11(1)1122X 12X21' ~ '^(((?=[12X=()]{13} )(?!.{14} )[12X=]*\\([12X]\\)[12X=]*) ([12X]{5}))$'
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Непонятки с регулярным выражением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]