Запрос на регулярные выражения в Oracle - PullRequest
3 голосов
/ 11 января 2010

Я пробую свои силы в изучении регулярных выражений в Oracle (точнее, моя первая попытка что-либо сделать с помощью RegEx).

Что символ ^ означает в начале? В документации упоминается

Use the caret and dollar sign to define patterns that match the start or end of a string.
^ defines that start of a string or column 1 of the string.

Итак, используя '^[*est]' в качестве шаблона, я понимаю, что match anything which has -est as its ending.

Однако, когда я попробовал,

SQL> select 1 from dual where regexp_like('test','^[*est]');

         1
----------
         1

SQL>  select 1 from dual where regexp_like('best','^[*est]');

no rows selected

SQL>  select 1 from dual where regexp_like('fest','^[*est]');

no rows selected

Однако, удалив ^, мы получим

SQL>  select 1 from dual where regexp_like('fest','[*est]');

         1
----------
         1

SQL>  select 1 from dual where regexp_like('best','[*est]');

         1
----------
         1

SQL> select 1 from dual where regexp_like('test','^[*est]');

         1
----------
         1

Почему это так? Почему в первом случае совпадение происходит для «теста», а не для других?

Ответы [ 2 ]

5 голосов
/ 11 января 2010
select 1 from dual where regexp_like('best','^[*est]');

[] в регулярных выражениях означает «любой из перечисленных символов»

Внутри [] звездочка теряет свое особое значение и означает только звездочку.

Регулярное выражениевыше соответствует любой строке, которая начинается с *, e, s или t (любой из перечисленных символов после начала строки).

Чтобы выбрать слова, заканчивающиеся на -estиспользуйте это:

select 1 from dual where regexp_like('nest','est$')

, что означает «строка est, за которой следует конец строки ($

2 голосов
/ 11 января 2010

Если синтаксис регулярных выражений в Oracle не сильно отличается от всех других реализаций регулярных выражений, то вы, вероятно, захотите изменить [] на (). [est] соответствует "e", "s" или "t". (est) с другой стороны соответствует "est".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...