我只需要在Oracle11g中显示包含2个或更多相同元音的字符串(制造商名称)。我正在使用RegEx来找到它。
SELECT manuf_name "Manufacturer", REGEXP_LIKE(manuf_name,'([aeiou])\2') Counter FROM manufacturer;
例如:
RegEx接受
OtterBox
Abca
abcA
RegEx拒绝
Samsung
Apple
我不确定如何继续前进。
答案 0 :(得分:3)
我想你想要这样的东西:
WITH mydata AS (
SELECT 'OtterBox' AS manuf_name FROM dual
UNION ALL
SELECT 'Apple' FROM dual
UNION ALL
SELECT 'Samsung' FROM dual
)
SELECT * FROM mydata
WHERE REGEXP_LIKE(manuf_name, '([aeiou]).*\1', 'i');
我不确定为什么您使用\2
作为反向引用而不是\1
- \2
并未引用此正则表达式中的任何内容。另外,请注意通配符和量词.*
,以指示在元音的第一次出现和第二次出现之间可以有任意数量的任何字符。第三,注意'i'
参数以表示不区分大小写的搜索(我认为这是你想要的,因为你说正则表达式应该匹配“OtterBox”)。
答案 1 :(得分:1)
\w*([aeiou])\w*\1+\w*
https://regex101.com/r/eE3iC2/3
编辑:根据建议更新一个:
.*([aeiou]).*\1.*