2015-07-11 7 views
1

Я пытаюсь найти регулярное выражение для сопоставления только чисел в следующем выражении, но мне нужна определенная группа.Регулярное выражение - соответствие внутри строки

Например:

VDSL 1.10.4

Как это возможно, чтобы соответствовать

Также мне нужно выражение для соответствия

PS I» м с использованием в качестве аромата Regex Oracle SQL function regex_substr()

Благодаря


Edit:

Я думаю, что я нашел обходной путь:

  • с REGEXP_SUBSTR() вы можете сравнить его с точками: '.10.' Впоследствии с REGEXP_REPLACE номер может быть извлечен.

    REGEXP_REPLACE (REGEXP_SUBSTR ('VDSL 1.10.4', '. \ Д +.), '. (\ D +)., '\ 1')

  • и последний номер

    REGEXP_REPLACE (REGEXP_SUBSTR ('VDSL 1.10.4', '\ д + $'), '(\ d +)', '\ 1')

+0

без точек. Должно быть 10 – lindusilois

ответ

0

SQL Fiddle

Oracle 11g R2 Схема установки:

Запрос 1:

WITH DATA AS (
    SELECT 'Vdsl 1.10.4' AS str 
    FROM DUAL 
) 
SELECT SUBSTR(REGEXP_SUBSTR(str, '\.\d+', 1, 1), 2) AS FIRST_NUMBER, 
     SUBSTR(REGEXP_SUBSTR(str, '\.\d+', 1, 2), 2) AS SECOND_NUMBER 
FROM DATA 

Results:

| FIRST_NUMBER | SECOND_NUMBER | 
|--------------|---------------| 
|   10 |    4 | 
0

С 10 составляет от 2 до точки вы можете уменьшить использование \.(\d+)\. и на 4 с момента его после o ne dot и подходит к концу, вы можете использовать \.(\d+)$.

Вы можете использовать правильную функцию и извлечь первую группу, которая является вашим номером.если вы не можете или не хотите, чтобы получить группу, которую вы можете использовать look-around:

(?<=\.)\d+(?=\.) 

Подробнее об основных регулярных выражениях http://www.regular-expressions.info/

+0

Да, но как я должен удалить верхние и конечные точки? – lindusilois

+0

@lindusilois проверить изменения! – Kasramvd

+0

Они не работают в Oracle SQL – lindusilois

0

Вы можете использовать очень простой RegEx:

(?=\.([0-9]+)) 

Для одного в конце:

([0-9]+)$ 
+0

lookbehind не поддерживается в Oracle SQL – lindusilois

+0

@lindusilois is look - ** ahaed ** поддерживается? – Downgoat

+0

не смотри вперед – lindusilois

Смежные вопросы