У меня есть набор строк в моей базе данных со значениями VARCHAR2 столбцов, как так: tac903.2, tac903.24, tac903.2a, tac903.2bOracle REGEXP_LIKE матч нечисловой символ
Я хочу, чтобы создать regex, который не совпадает, если последний символ в выражении поиска является числовым. Поэтому, когда я ищу «tac903.2», я хочу только соответствовать: tac903.2, tac903.2a и tac903.2b. Это должно быть простым, но я не получаю желаемое поведение моего регулярного выражения здесь:
REGEXP_LIKE(col, 'tac903.2[a-z]?'); //This is matching the tac903.24 record.
REGEXP_LIKE(col, 'tac903.2[^0-9]?'); //This also is matching the tac903.24 record.
Я новичок с регулярными выражениями, но на основе своих исследований, кажется, как выше должен достигнуть поведения I» м ищет. Может кто-нибудь сказать мне, что с ними не так?
Я вижу, что это работает в демонстрации, которую вы опубликовали, но в oracle «:>:» не распознается как класс символов. Спасибо за ваш ответ, хотя! – user3923442
Oracle regex не поддерживает границы слов, будь то регулярная сортировка ('\ b') или POSIX-стиль (' [[: <:]] и '[[:>:]]'). –
@ user3923442 check Редактировать – vks