RegEx:字符串中重复的相同元音 - Oracle SQL

时间:2015-04-05 03:39:56

标签: sql regex oracle

我只需要在Oracle11g中显示包含2个或更多相同元音的字符串(制造商名称)。我正在使用RegEx来找到它。

SELECT manuf_name "Manufacturer", REGEXP_LIKE(manuf_name,'([aeiou])\2') Counter FROM manufacturer;

例如:
RegEx接受

OtterBox
Abca
abcA

RegEx拒绝

Samsung
Apple

我不确定如何继续前进。

2 个答案:

答案 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”)。

SQL Fiddle here.

答案 1 :(得分:1)

大卫你不是为我工作的。那怎么样?

\w*([aeiou])\w*\1+\w*

https://regex101.com/r/eE3iC2/3

编辑:根据建议更新一个:

.*([aeiou]).*\1.*

https://regex101.com/r/eE3iC2/5