正则表达式查找白色-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
(如果后面没有再跟一个或两个数字)。
帮我修正我的正则表达式::
(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
(如果后面没有再跟一个或两个数字)。