首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要正则表达式来匹配Oracle 12cR1源代码中的确切表名。

需要正则表达式来匹配Oracle 12cR1源代码中的确切表名。
EN

Stack Overflow用户
提问于 2018-10-24 14:39:56
回答 1查看 106关注 0票数 0

我使用的是Oracle12cR1。我需要一个REGEX模式来准确地匹配Oracle源代码中给定的表名(即)匹配之前不能有数字、字母表或下划线符号。

我已经创建了一个虚拟源代码,并尝试了下面的内容。它并不是获取所有想要的记录。我遗漏了什么?这有REGEX模式吗?

测试代码:

代码语言:javascript
复制
with names as (
select 'mytabname' tabname from dual union all
select 'mytabname1' from dual union all
select 'mytabname_' from dual union all
select 'mytabnameX' from dual union all
select '1mytabname' from dual union all
select '_mytabname' from dual union all
select 'Xmytabname' from dual union all
select '1mytabname_' from dual union all
select '1mytabnameX' from dual union all
select '_mytabname1' from dual union all
select 'Xmytabname1' from dual union all
select '_mytabnameX' from dual union all
select 'Xmytabname_' from dual union all
select '_mytabname_' from dual union all
select 'XmytabnameX' from dual union all
select '1mytabname1' from dual union all
select ' mytabname_' from dual union all
select '_mytabname ' from dual union all
select ' mytabname ' from dual union all
select ' mytabnameX' from dual union all
select 'Xmytabname ' from dual union all
select ' mytabname1' from dual union all
select '1mytabname ' from dual union all
select '.mytabname ' from dual union all
select ' mytabname.' from dual union all
select '.mytabname.' from dual union all
select '*mytabname' from dual union all
select ' mytabname*' from dual union all
select '*mytabname*' from dual union all
select 'defmytabnameabc' from dual)
select 'start'||tabname||'end' from names
where regexp_like(tabname, '[^a-zA-Z0-9_](mytabname)[^a-zA-Z0-9_]');

输出:

代码语言:javascript
复制
start mytabname end
start.mytabname end
start mytabname.end
start.mytabname.end
start mytabname*end
start*mytabname*end

输出漏掉以下记录

代码语言:javascript
复制
startmytabnameend
start*mytabnameend
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-24 15:10:15

我通常是这样说的:

代码语言:javascript
复制
SELECT *
  FROM user_source
 WHERE regexp_like(text, '(\W|^)' || 'employees' || '(\W|$)', 'i');

在这里查找Regex的详细信息:https://stackoverflow.com/a/52441424/7998591

'i'是用来忽略大小写的,如果你愿意,你可以省略它。

Demo for your data

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52971780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档