请教一个正则表达式以及regexp_like函数的例子

小灯光环
博客专家认证
2016-08-25 10:41:23
首先准备一批测试数据:
create or replace view v_test_06 as
select '123' as data from dual union all
select 'abc' from dual union all
select '123abc' from dual union all
select 'abc123' from dual union all
select 'a1b2c3' from dual union all
select 'a1b2c3#' from dual union all
select '3$' from dual union all
select 'a 2' from dual union all
select '0123456789' from dual union all
select 'b3#45' from dual;


需求是查询只包含字母和数字的值,答案是这个SQL:
select data from v_test_06 where regexp_like(data,'^[0-9a-zA-Z]+$');


我这里的疑问就是上面这个正则里的+号,该如何解释,谁能详细的逐步分析一下匹配过程,+号 我查了一下它的意思是“匹配前面的子表达式一次或多次”,在这个例子中还是不太理解,我知道前面^[0-9a-zA-Z]的意思是 以所有大小写字母或数字开头的所有字符串,但是+$就不太明白了,我知道$是字符串结束的意思,但是“+$”在一起到底该如何理解,求大神详细分析一下。。谢谢!
...全文
609 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2016-08-26
  • 打赏
  • 举报
回复
'^[0-9a-zA-Z]+$' ^ 从开头 $到结束 + 每一个都要匹配 [0-9a-zA-Z] 这是 2# 整理的帖子。 http://bbs.csdn.net/topics/391999773
引用 1 楼 ghx287524027 的回复:
这么快就用上了。
ghx287524027 2016-08-25
  • 打赏
  • 举报
回复
不要把+和$看做一个整体,他俩是分开的,匹配的字符串是从前向后看的,即先以数字大小写字母开头,然后再匹配他们一次或多次,最后是字符串结束。其中,正则表达式采用最长匹配模式。所以这个“多次”是没有固定次数的,一直匹配到不能匹配为止
小灯光环 2016-08-25
  • 打赏
  • 举报
回复
引用 1 楼 ghx287524027 的回复:
+号是针对它前面中括号里的内容说的,即匹配中括号里面的内容一次或多次。在这里就是匹配数字大小写字母一次或多次的意思
嗯,那“+$”在这里是什么意思~ 能否说一下具体的匹配过程~ 一次或多次?到底是几次呢?
ghx287524027 2016-08-25
  • 打赏
  • 举报
回复
+号是针对它前面中括号里的内容说的,即匹配中括号里面的内容一次或多次。在这里就是匹配数字大小写字母一次或多次的意思

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧