连号的现在已经解决了,1234或4321这种递增或递减的搞不出来了,(?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){5}),这个在oracle中跑没有结果,哪位兄弟对正则表达式比较了解的,指点一下吧
调试欢乐多
'(0{5}$)|(1{5}$)|(2{5}$)|(3{5}$)|(4{5}$)|(5{5}$)|(6{5}$)|(7{5}$)|(8{5}$)|(9{5}$)')
这个是匹配5连号的,比如手机号后几位是11111,22222,33333等,现在要匹配1234或2345或3456等,正则表达式该怎么写?还有这种1212或2323之类的又该怎么写?
-------如果你查询出来的结果只有一行为连号,如果有多行非连号
SQL>
SQL> select rn
2 from (select rs, rs - row_number() over(order by 1) rn
3 from (select regexp_substr('12345', '\d', 1, rownum) rs
4 from dual
5 connect by rownum <= length('12345')))
6 group by rn
7 ; RN
----------
0SQL>
SQL> select rn
2 from (select rs, rs - row_number() over(order by 1) rn
3 from (select regexp_substr('15268', '\d', 1, rownum) rs
4 from dual
5 connect by rownum <= length('15268')))
6 group by rn
7 ; RN
----------
2
3
-1
0SQL>
SUBSTR(DEVICE_NUMBER, 8, 1) - 1 AND
SUBSTR(DEVICE_NUMBER, 8, 1) =
SUBSTR(DEVICE_NUMBER, 9, 1) - 1 AND
SUBSTR(DEVICE_NUMBER, 9, 1) =
SUBSTR(DEVICE_NUMBER, 10, 1) - 1 AND
SUBSTR(DEVICE_NUMBER, 10, 1) =
SUBSTR(DEVICE_NUMBER, 11, 1) - 1) --ABCDE
OR (SUBSTR(DEVICE_NUMBER, 7, 1) =
SUBSTR(DEVICE_NUMBER, 8, 1) + 1 AND
SUBSTR(DEVICE_NUMBER, 8, 1) =
SUBSTR(DEVICE_NUMBER, 9, 1) + 1 AND
SUBSTR(DEVICE_NUMBER, 9, 1) =
SUBSTR(DEVICE_NUMBER, 10, 1) + 1 AND
SUBSTR(DEVICE_NUMBER, 10, 1) =
SUBSTR(DEVICE_NUMBER, 11, 1) + 1) --EDCBA
递增或递减现在我用这个方法写了个,主要是想了解一下正则表达式写的话怎么写
java里可以这样写,这个更简洁,而且可以写成通用的,oracle应该也有类似的吧
倒是可以帮着优化一下 连号的代码
where regexp_like( 4位号码 ,'^([[:digit:]])\1{3}$')
where regexp_like(rn,'^([[:digit:]])\1{3}$') -- 4位 连号
or rn = substr(rn,1,1)
||substr(rn,1,1)+1
||substr(rn,1,1)+2
||substr(rn,1,1)+3 -- 4位 连续 升序 1234
or rn = substr(rn,1,1)
||substr(rn,1,1)-1
||substr(rn,1,1)-2
||substr(rn,1,1)-3 -- 4位 连续 降序 4321