Функция Oracle REGEXP_INSTR
Описание
Функция Oracle REGEXP_INSTR используется для возврата местоположения шаблона регулярного выражения в строке. Эта функция позволяет найти подстроку в строке, используя сопоставление с шаблоном регулярного выражения. Если совпадений не найдено, функция возвращает 0.
Синтаксис:
REGEXP_INSTR (source_char, pattern [, позиция [, вхождение [, return_opt [, match_param [, subexpr] ] ] ] ]
Параметр:
название | Описание | Типы данных |
---|---|---|
source_char | Строка для поиска. | CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB. |
шаблон | шаблон является регулярным выражением. | CHAR, VARCHAR2, NCHAR или NVARCHAR2. |
позиция | Необязательный. Позиция является положительным целым числом, указывающим символ source_char, с которого начинается поиск. Если опущено, по умолчанию используется значение 1, которое является первой позицией в строке. | |
вхождение | Необязательный. Это положительное целое число, указывающее, какое вхождение шаблона в source_char ищется. По умолчанию используется значение 1, что означает, что эта функция ищет первое вхождение шаблона. | |
return_opt | Если указать 0, то он возвращает позицию первого символа вхождения. Это значение по умолчанию, и если указать 1, то оно возвращает позицию символа после вхождения. | |
match_param | Необязательный. Это позволяет вам изменять поведение соответствия для функции REGEXP_COUNT. | |
subexpr | Необязательный. Подвыражение представляет собой целое число от 0 до 9, указывающее, какое подвыражение в шаблоне является целью функции. Если значение равно нулю, возвращается позиция всей подстроки, которая соответствует шаблону. Если больше нуля, возвращается позиция фрагмента подстроки, которая соответствует номеру подвыражения subexpr в соответствующей подстроке. Функция возвращает ноль, если шаблон не имеет хотя бы субвыражений subexpr. Значение null subexpr возвращает NULL. Значение по умолчанию для subexpr равно нулю. |
Вот список операторов форматирования шаблона:
оператор | Описание |
---|---|
/ д | Цифровой символ |
/ D | Нецифровый персонаж. |
/ ш | Слово персонажа. |
/ W | Несловесный персонаж. |
/ s | Пробельный символ. |
/ S | Не пробельный символ. |
/ A | Соответствует только в начале строки или перед символом новой строки в конце строки. |
/ Z | Соответствует только в конце строки. |
*? | Соответствует предыдущему элементу шаблона 0 или более раз (не допускается). |
+? | Соответствует предыдущему элементу шаблона 1 или более раз (не разрешено). |
?? | Соответствует предыдущему элементу шаблона 0 или 1 раз (не разрешено). |
{П}? | Соответствует предыдущему элементу шаблона ровно n раз (нон-жадность). |
{П,}? | Соответствует предыдущему элементу шаблона по крайней мере n раз (не разрешено). |
{П, т}? | Соответствует предыдущему элементу шаблона, по крайней мере, n, но не более, чем mtimes (nongreedy). |
Вот список операторов регулярных выражений и метасимволов:
оператор | Описание |
---|---|
/ | Символ обратной косой черты может иметь четыре различных значения в зависимости от контекста. Он может: стоять за себя, цитировать следующего символа, ввести оператора, ничего не делать |
* | Соответствует нулю или более вхождений |
+ | Соответствует одному или нескольким вхождениям |
? | Соответствует нулю или одному вхождению |
| | Оператор чередования для указания альтернативных совпадений |
^ | По умолчанию соответствует началу строки. В многострочном режиме он соответствует началу любой строки в любом месте строки источника. |
$ | Соответствует концу строки по умолчанию. В многострочном режиме он соответствует концу любой строки в любой части строки источника. |
, | Соответствует любому символу в поддерживаемом наборе символов, кроме NULL |
[] | Выражение в скобках для указания списка соответствия, который должен соответствовать любому из выражений, представленных в списке. Несоответствующее выражение списка начинается с дифракционного символа (^) и указывает список, который соответствует любому символу, кроме выражений, представленных в списке. Чтобы указать правую скобку (]) в выражении в скобках, поместите ее сначала в список (после начального обхода (^), если есть). Чтобы указать дефис в выражении в скобках, поместите его сначала в список (после начального окружности (^), если есть), последний в списке или в качестве конечной точки диапазона в выражении диапазона. |
() | Группирующее выражение, рассматриваемое как единое подвыражение |
{Т} | Соответствует ровно м раз |
{М,} | Соответствует по крайней мере м раз |
{Т, п} | Совпадает не менее m раз, но не более n раз |
/ п | Выражение обратной ссылки (n - это цифра от 1 до 9) соответствует n-му подвыражению, заключенному между '(' и ')', предшествующим / n |
[..] | Определяет один элемент сопоставления и может быть элементом из нескольких символов (например, [.ch.] На испанском языке) |
[::] | Определяет классы символов (например, [: alpha:]). Соответствует любому символу в классе символов. |
[==] | Определяет классы эквивалентности. Например, [= a =] соответствует всем символам, имеющим базовую букву «a». |
Вот список значений для match_param:
Значение | Описание |
---|---|
«С» | Выполните сравнение с учетом регистра. |
'я' | Выполните сопоставление без учета регистра. |
«П» | Позволяет символу точки (.) Соответствовать символу новой строки. По умолчанию период является групповым символом. |
«М» | Предполагается, что выражение имеет несколько строк, где ^ - начало строки, а $ - конец строки, независимо от положения этих символов в выражении . По умолчанию выражение считается одной строкой. |
'Икс' | Пробельные символы игнорируются. По умолчанию пробельные символы сопоставляются с любым другим символом. |
Относится к
Oracle 12c, Oracle 11g
Примеры: функция Oracle REGEXP_INSTR
Следующий пример находит позицию первого символа 't' в строке.
SELECT REGEXP_INSTR ('The web development Tutorial', 't') FROM dual;
Пример вывода:
REGEXP_INSTR ( 'THEWEBDEVELOPMENTTUTORIAL', 'Т') --------------------------------------------- 19
Приведенный выше пример вернет 2, потому что он считает количество вхождений 't' в строку. Здесь мы не указали значение match_parameter, функция REGEXP_COUNT будет выполнять поиск с учетом регистра, что означает, что символы 'T' не будут включены в счет.
В следующем примере мы предоставили start_position из 1, вхождение 1, return_option из 0 и match_parameter из 'i', запрос вернет 1 в качестве результата. На этот раз функция будет искать значения «t» и «T» и возвращать первое вхождение.
SELECT REGEXP_INSTR ('The web development Tutorial', 't',1,1,0,'i') FROM dual;
Пример вывода:
REGEXP_INSTR ( 'THEWEBDEVELOPMENTTUTORIAL', 'Т', 1,1,0 'I'), -------------------------------------------------- ----- 1
В следующем примере проверяется строка, ища вхождения одного или нескольких непустых символов. Поиск начинается с первого символа в строке и возвращает начальную позицию (по умолчанию) третьего вхождения одного или нескольких непустых символов.
SELECT
REGEXP_INSTR('The web development tutorial',
'[^ ]+', 1, 3) "REGEXP_INSTR"
FROM DUAL;
Пример вывода:
REGEXP_INSTR ------------ 9
В следующем примере проверяется строка, ища вхождения слов, начинающихся с t, e или w, независимо от регистра, за которыми следуют любые три алфавитных символа. Поиск начинается с третьего символа в строке и возвращает позицию в строке символ, следующий за вторым вхождением с t, e или w, независимо от регистра.
SELECT
REGEXP_INSTR('The web development tutorial',
'[s|r|p][[:alpha:]]{3}', 3, 2, 1, 'i') "REGEXP_INSTR"
FROM DUAL;
Пример вывода:
REGEXP_INSTR ------------ 29
Предыдущий: REGEXP_COUNT
Далее: NLS_CHARSET_DECL_LEN
Новый контент: Composer: менеджер зависимостей для PHP , R программирования