我正在寻找一个捕获所有0值和空格的正则表达式。找到类似的任何组合:
我尝试使用
[0\s]+$
,但无法正常工作。我应该如何重写我的正则表达式? (我正在尝试找出方法,但是..()
答案 0 :(得分:0)
如果您只想使用零和空格,则应使用它,
[0 ]+
\ s捕获所有空白,包括空格,制表符,换行和回车符。所以只需将0和空格放在方括号内
答案 1 :(得分:0)
我认为您正在寻找this:
with t(id,value) as
(
select 1,'0000 0 0 0 000 000' from dual union all
select 2,'0 0 0 00000 00000' from dual union all
select 3,'00000000' from dual union all
select 4,'0a0 0 00000 00000' from dual
)
select t.value as "values",
regexp_substr(t.value,'[[:space:]]+') as "spaces",
regexp_substr(t.value,'[0]+') as "zeroes"
from t
order by id;
答案 2 :(得分:-1)
在正则表达式中,您尝试使用方括号\s
中的字符类[]
。这是行不通的(至少不是按预期的那样)-您的正则表达式尝试匹配文字零,反斜杠或字母s。
最简单的解决方法是消除方括号,并在|
中使用or表达式:
with v(value) as (
select '0000 00 00 ' from dual union all
select '0' || chr(9) || '00000000' from dual union all
select '000000000' || chr(10) from dual)
select value,
regexp_substr(value, '(0|\s)+') as mynum
from v
或者,您可以在方括号内使用POSIX字符类[:space:]
:
with v(value) as (
select '0000 00 00 ' from dual union all
select '0' || chr(9) || '00000000' from dual union all
select '000000000' || chr(10) from dual)
select value,
regexp_substr(value, '[0[:space:]]+') as mynum2
from v