找到任何出现超过4次的角色

时间:2015-06-15 11:57:07

标签: sql regex oracle

我想找到4到10次之间的任何字符,我使用REGEXP_LIKE但它只对一个字符'a'有效,我想找到所有字母:

SELECT regex_test_name
FROM regex_test
WHERE REGEXP_LIKE(regex_test_name, 'a{4,10}')

3 个答案:

答案 0 :(得分:1)

使用[[:alpha:]]

REGEXP_LIKE(regex_test_name, '[[:alpha:]]{4,10}');

答案 1 :(得分:1)

如果你想重复相同的角色4到10次,你必须捕捉角色,然后检查它是否重复,这是匹配的正则表达式:

'([a-zA-z])\1{4,10}'

以下将返回' aaaa'

regexp_substr('hfhweffkjnaaaaagpeg','([a-zA-z])\1{4,10}')

答案 2 :(得分:0)

SELECT regex_test_name
FROM regex_test
WHERE REGEXP_LIKE(regex_test_name, '([[:alpha:]])\1{3,9}')

dnoeth's answer的启发,但由于它捕获了第一个字符,因此指定3-9个后续重复意味着总共发生4-10个连续出现。