Я использую регулярное выражение, которое отлично работает в тестерах Java/PHP/regex.Oracle SQL Regex не возвращает ожидаемые результаты
\d(?:[()\s#-]*\d){3,}
Примеры: https://regex101.com/r/oH6jV0/1
Однако, пытаясь использовать тот же регулярное выражение в Oracle SQL не возвращает никаких результатов. Возьмем, например:
select *
from
(select column_value str from table(sys.dbms_debug_vc2coll('123','1234','12345','12 135', '1', '12 3')))
where regexp_like(str, '\d(?:[()\s#-]*\d){3,}');
Это не возвращает строк. Почему это действует по-другому? Я даже использовал тестер регулярных выражений, который делает POSIX ERE, но это все еще работает.
Прохладный. Это кажется в основном правильным (для чего это), но это не соответствующие пробелы, например. '12 135 '. – Jeremy
@Jeremy Обновлено - swap perl '\ s' для POSIX' [: space:] 'внутри класса символов (как уже упоминалось ранее). – MT0