我对正则表达不是很好,有一点我不太懂。
我有一个字符串:' BSIOC_V6_560',以及不同模式的列表。我需要得到这个字符串匹配的每个模式。 但我有以下尝试匹配,但我不会:
select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560','BSIOC_V5*');
我一定误解了什么。有人可以给我一个解释吗?
答案 0 :(得分:0)
select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560','BSIOC_V5.*');
重点是开放式模式是隐式子串匹配的。
select 'True' as Response from dual where REGEXP_LIKE('abc','b');
结果:是
select 'True' as Response from dual where REGEXP_LIKE('abc','b$');
结果:空
select 'True' as Response from dual where REGEXP_LIKE('abc','c$');
结果:是
答案 1 :(得分:0)
@Jan回答是正确的,但仅用于回答你的问题..
字符*
(星号)表示在您的BSIOC_V5情况下零次或多次重复 ..所以是的!你重复0次!这句话也回归真实:
select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560', 'X*');
字符.
(点)表示任何字符,因此.*
表示任意字符的重复次数为零或更多......所以...
select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560', 'BSIOC_V5');
没有匹配,你找不到BSIOC_V5
select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560', 'BSIOC_V.');
是! BSIOC_V加上任何字符
select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560', 'BSIOC_V5.*');
不匹配,你找不到BSIOC_V5加上别的......
我希望你会发现它有用!