Regex 如何过滤包含字符和数字组合的字符串
我想问一下如何过滤可能包含2种模式的“产品”列:Regex 如何过滤包含字符和数字组合的字符串,regex,oracle,Regex,Oracle,我想问一下如何过滤可能包含2种模式的“产品”列: 它以3个字符“A-Z”或“A-Z”开头,后跟数字 或 例如:ABC1258、acb548796 它以字符“K”开头,后面是数字,然后是“u”,然后是其他数字 例如:K123233_06565、K435_245 谢谢这里有一个选项,它使用正则表达式 SQL> with test (col) as 2 (select 'ABC1258' from dual union all 3 select 'K435_24
谢谢这里有一个选项,它使用正则表达式
SQL> with test (col) as
2 (select 'ABC1258' from dual union all
3 select 'K435_245' from dual union all
4 select 'AB_445' from dual union all
5 select 'KA234_23' from dual union all
6 select 'K12_BC' from dual union all
7 select 'XXX1243124YYY' from dual
8 )
9 select col
10 from test
11 where regexp_like(col, '^[[:alpha:]]{3}\d+$')
12 or regexp_like(col, '^K\d+_\d+$');
COL
-------------
ABC1258
K435_245
SQL>
这里还有一种方法:
with tab as(
select 'ABC1258' as str from dual union all
select 'abc548796'as str from dual union all
select 'K123233_06565'as str from dual union all
select 'K435_245'as str from dual union all
select 'X435_245'as str from dual union all
select 'A435_245'as str from dual union all
select 'KL435_245'as str from dual
)
select *
from tab
where REGEXP_LIKE (str, '^([A-Za-z]{3}[0-9]+)|(K[0-9]+_).*$');
结果:
ABC1258
abc548796
K123233_06565
K435_245
你有没有看过像这样的支持模式匹配的
?你试过什么?对不起,我错了,它是oracle SQL而不是MSSQL。我试过第一个例子:[A-ZA-z]{3}[0-9]+$那么,除了一个:“你试过什么?”@phalondon你的方法不错,但是第二个A
应该是小写的谢谢。我是正则表达式的初学者。因此,请您解释一下什么是[:alpha:]和d+?@phalondon-在Oracle文档中有一个管道。正如您所料,它涵盖了Oracle的正则表达式支持。不客气[:alpha:]
表示字母(如[A-Za-z]
),而\d
表示数字(如[0-9]
)<代码>+
表示“给我一个或多个字符”。