在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中检测双元音的正则表达式[重复]的主要内容,如果未能解决你的问题,请参考以下文章