регулярное выражение соответствует нулю и пробелам - PullRequest
0 голосов
/ 18 сентября 2018

Я ищу регулярное выражение, которое фиксирует все 0 значений и пробелов. Найдите любые подобные комбинации:

  1. 0000 0 0 0 000 000
  2. 0 0 0 00000 00000
  3. 00000000

Я пытался использовать

[0\s]+$

но это не работает правильно. Как мне переписать мое регулярное выражение? (Я пытаюсь понять, как это сделать, но .. ()

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

В своем регулярном выражении вы пытались использовать класс символов \s в квадратных скобках []. Это не работает (по крайней мере, не так, как ожидалось) - ваше регулярное выражение пытается сопоставить буквенные нули, обратные косые черты или буквы s.

Самое простое решение - избавиться от квадратных скобок и использовать выражение или с |:

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
0 голосов
/ 18 сентября 2018

Я думаю, вы ищете это :

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;
0 голосов
/ 18 сентября 2018

Если вы просто хотите нули и пробелы, вы должны использовать это,

[0 ]+

\ s захватывает все пробелы, которые являются пробелами, символами табуляции, новыми строками, возвратом каретки. Так что просто поместите 0 и пробел в квадратных скобках

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...