正则表达式查找白色-space 字符和非白色-space 字符

regular expression find a white-space character and non-white-space character

帮我修正我的正则表达式::

(REGEXP_SUBSTR(WORD, '#time\S[0-9]{1,2}'  )) as reg

我要得到结果:

'#time 52' 
'#time20'

如果我写:(REGEXP_SUBSTR(WORD, '#time\S[0-9]{1,2}' )) as reg

结果:#time20

如果我写:(REGEXP_SUBSTR(WORD, '#time\s[0-9]{1,2}' )) as 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

我该如何解决?感谢您的帮助!

如果我没理解错的话,这就是你想要的表达方式:

select REGEXP_SUBSTR(WORD, '#time\s*[0-9]{1,2}')

这将处理“#time”和数字之间的任意数量的空格(包括 0)。如果您最多想要一个,请使用 ? 而不是 *

您是否在寻找确切的子字符串 #text 后跟 可选 space 然后是一位或两位数字?然后 '#text\s?\d{1,2}' 将起作用。 ?表示可选。

在那种情况下你的'#text\S\d{1,2}'是不正确的;它允许 并要求 #text 和一个或两个数字之间的非 space 字符。在您的示例中,它恰好匹配第一个数字,然后 \d{1,2} 匹配第二个数字,但这只是巧合。它还会匹配 #text+00#text123。但是它将匹配#text4(如果后面没有再跟一个或两个数字)。