帮我修复我的正则表达式::
(REGEXP_SUBSTR(WORD, '#time\S[0-9]{1,2}' )) as reg
我想得到结果:
'#time 52'
'#time20'
如果我写:(REGEXP_SUBSTR(WORD, '#time\S[0-9]{1,2}' ))
作为reg
结果:#time20
如果我写:(REGEXP_SUBSTR(WORD, '#time\s[0-9]{1,2}' ))
作为reg
结果:#time 52
SQL查询:
SELECT
(REGEXP_SUBSTR(WORD, '#time\S[0-9]{1,2}' )) as reg
FROM(
select
'text #time 52 texttexttext #time20 text' as WORD
from dual
)tabl
我该如何解决?谢谢你的帮助!
答案 0 :(得分:0)
如果我理解正确,这就是你想要的表达方式:
select REGEXP_SUBSTR(WORD, '#time\s*[0-9]{1,2}')
这将处理“#time”和数字之间的任意数量的空格(包括0)。如果您最多需要一个,请使用?
代替*
。
答案 1 :(得分:0)
您是否在寻找确切的子串#text
,然后是可选空格,然后是一位或两位数?然后'#text\s?\d{1,2}'
将起作用。 ?
表示可选。
在这种情况下,您的'#text\S\d{1,2}'
不正确;它允许并要求 #text
和一个或两个数字之间的非空格字符。在您的示例中,恰好匹配第一个数字,然后\d{1,2}
匹配第二个数字,但这只是巧合。它还会匹配#text+00
和#text123
。但它会不匹配#text4
(如果没有后跟一两个数字)。