我一直在尝试找到一个正则表达式来匹配以下表达式中的数字,但我需要某个组。
例如:
Vdsl 1.10.4
如何匹配 10
我还需要一个匹配 4
的表达式P.S我用作正则表达式的Oracle SQL函数regex_substr()
由于
编辑:
我想我找到了一个解决方法:
使用REGEXP_SUBSTR(),您可以将其与点匹配:'。10。'之后使用REGEXP_REPLACE可以提取数字。
REGEXP_REPLACE(REGEXP_SUBSTR('Vdsl 1.10.4','。\ d +。'), '(\ d +)。', '\ 1')
和最后一个号码
REGEXP_REPLACE(REGEXP_SUBSTR('Vdsl 1.10.4','。\ d + $'), '(\ d +)', '\ 1')
答案 0 :(得分:0)
由于10在2点之间,你可以使用\.(\d+)\.
和4,因为它在一个点之后并且结束时你可以使用\.(\d+)$
。
您可以使用正确的功能并提取您的号码的第一组。如果您不能或不想获得该群组,则可以使用look-around:
(?<=\.)\d+(?=\.)
详细了解基本正则表达式http://www.regular-expressions.info/
答案 1 :(得分:0)
您可以使用非常简单的RegEx:
$ssql = "ALTER TABLE qolak AUTO_INCREMENT ='$rownum'";
最后一个:
(?=\.([0-9]+))
答案 2 :(得分:0)
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 |