在Oracle中检测双元音的正则表达式[重复]

Posted

技术标签:

【中文标题】在Oracle中检测双元音的正则表达式[重复]【英文标题】:Regular expression to detect doubled vowels in Oracle [duplicate] 【发布时间】:2018-01-30 08:18:37 【问题描述】:

谁能解释一下这个正则表达式?此查询在 Oracle 中用于返回具有双元音的员工的姓氏(其中 last_name 包含两个相邻的 a、e、i、o 或 u,无论大小写):

SELECT last_name
FROM employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i');

输出是:

LAST_NAME
---------------
De Haan
Greenberg
Khoo
Gee
Greene
Lee
Bloom
Feeney

【问题讨论】:

见regex101.com/r/EuTfil/1,解释在右边。 好的,见 1) Carets in Regular Expressions, 2) Have trouble understanding capturing groups and back references 【参考方案1】:

正则表达式模式([aeiou])\1 只是连续匹配两个元音:

([aeiou])   match and capture a single vowel
\1          then match the same vowel we just captured

如果您检查匹配的姓氏,您会发现它们在某个位置都有重复的元音。顺便说一句,\1 这个术语被称为反向引用,它指的是模式中较早捕获的数量。

浏览下面有用的演示,以更好地了解该模式的工作原理。

Demo

【讨论】:

你能详细解释一下这个表达式吗([aeiou])\1 @AnkitJuneja 看看演示。我无法更好地解释它。

以上是关于在Oracle中检测双元音的正则表达式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式:字符串中重复相同的元音 - Oracle SQL

Oracle 正则表达式

使用正则表达式检测词组搭配

Javascript 正则表达式替换必须保留德语变异元音

正则表达式检测代码中的注释[重复]

ruby 用正则表达式检测双字