正则表达式

Gospelanswer 2014-08-04 09:26:57
最近在学习正则表达式,参考了网上一些博客的解释来学习。但是总体来看对正则还是有些难理解,求大神介绍一下通俗易懂的正则方面的东西。谢谢
...全文
185 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
现在 2014-08-06
  • 打赏
  • 举报
回复
收藏。。。。
  • 打赏
  • 举报
回复
楼主多找正则匹配例子练习下就OK了,使用频率不是太高,至于想要熟练掌握则必须在各种理论基础上处理各种问题,而这就是所谓的经验和实战。
bw555 2014-08-06
  • 打赏
  • 举报
回复
引用 5 楼 onemetre 的回复:
看到有人学习正则,颇高兴,正则是个很强大的东西,特别是用于数据库中,程序牛人必备七大武器,希望你早日练好
都是哪7大武器啊,看看还缺少什么,也好去学习学习
onemetre 2014-08-06
  • 打赏
  • 举报
回复
看到有人学习正则,颇高兴,正则是个很强大的东西,特别是用于数据库中,程序牛人必备七大武器,希望你早日练好
onemetre 2014-08-06
  • 打赏
  • 举报
回复
引用 6 楼 bw555 的回复:
[quote=引用 5 楼 onemetre 的回复:] 看到有人学习正则,颇高兴,正则是个很强大的东西,特别是用于数据库中,程序牛人必备七大武器,希望你早日练好
都是哪7大武器啊,看看还缺少什么,也好去学习学习[/quote] http://blog.sina.com.cn/s/blog_639d55240100gqcx.html http://developer.51cto.com/art/200703/41486.htm
CT_LXL 2014-08-05
  • 打赏
  • 举报
回复
引用 楼主 Gospelanswer 的回复:
最近在学习正则表达式,参考了网上一些博客的解释来学习。但是总体来看对正则还是有些难理解,求大神介绍一下通俗易懂的正则方面的东西。谢谢
只能通过自己敲代码,结合结果来理解,这样才能真正的明白
sych888 2014-08-05
  • 打赏
  • 举报
回复
多想想,多敲几行代码试试
liao_z_j 2014-08-05
  • 打赏
  • 举报
回复
多练习,别无它法
bw555 2014-08-04
  • 打赏
  • 举报
回复
oracle正则表达式 ORACLE终于在10G中提供了对正则表达式的支持,以前那些需要通过LIKE来进行的复杂的匹配就可以通过使用正则表达式更简单的实现。 ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,REGEXP_REPLACE :与REPLACE的功能相似 在新的函数中使用正则表达式来代替通配符‘%’和‘_’。 正则表达式由标准的元字符(metacharacters)所构成: '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。 '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 'n' 或 'r'。 '.' 匹配除换行符 n之外的任何单字符。 '?' 匹配前面的子表达式零次或一次。 '+' 匹配前面的子表达式一次或多次。 '*' 匹配前面的子表达式零次或多次。 '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。 '( )' 标记一个子表达式的开始和结束位置。 '[]' 标记一个中括号表达式。 '{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。 num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。 字符簇: [[:alpha:]] 任何字母。 [[:digit:]] 任何数字。 [[:alnum:]] 任何字母和数字。 [[:space:]] 任何白字符。 [[:upper:]] 任何大写字母。 [[:lower:]] 任何小写字母。 [[:punct:]] 任何标点符号。 [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。 各种操作符的运算优先级 转义符 (), (?:), (?=), [] 圆括号和方括号 *, +, ?, {n}, {n,}, {n,m} 限定符 ^, $, anymetacharacter 位置和顺序 | “或”操作 下面通过几个例子来具体说明这几个新函数的使用方法: SQL> create table sunwg (id varchar2(100)); Table created. SQL> insert into sunwg values ('<a href="http://sunwgneuqsoft.itpub.net/post/34741/447698">常见SQL访问索引的方式</a>'); 1 row created. SQL> commit; Commit complete. SQL> select * from sunwg; ID ---------------------------------------------------------------------------------------------------- <a href="http://sunwgneuqsoft.itpub.net/post/34741/447698">常见SQL访问索引的方式</a> 1, REGEXP_LIKE REGEXP_LIKE与LIKE类似,用REGEXP_LIKE能实现的操作大部分都可以用LIKE实现,不过要简单方便得多。 <a>目标:查询表sunwg中是否存在类似与3XX41的记录? LIKE: select * from sunwg where id like '%3__41%'; REGEXP_LIKE select * from sunwg where regexp_like(id,'3..41'); <b>目标:查询表sunwg中是否存在类似与3XX41的记录,并且XX必须是数字? LIKE: 这个LIKE我就想出来很好的实现办法了,唯一想到就是截取出来后判断该字符串是不是纯数字的。 REGEXP_LIKE select * from sunwg where regexp_like(id,'3[0-9]{2}41'); 用REGEXP_LIKE则可以简单快捷的得到结果。其他几个函数也都有类似的情况,下面的函数就不具体比较差异了,仅仅给出常用的用法。 2, REGEXP_INSTR <a>目标:查询表sunwg中是否存在类似与3XX41的字符串第一次出现的位置? SQL> select regexp_instr(id,'3..41',1,1) from sunwg; REGEXP_INSTR(ID,'3..41',1,1) ---------------------------- 46 SQL> select substr(id,46,5) from sunwg; SUBST ----- 34741 3, REGEXP_SUBSTR <a>目标:截取出表sunwg中的URL地址? SQL> select regexp_substr(id,'http[0-9a-zA-Z/:.]+') from sunwg; REGEXP_SUBSTR(ID,'HTTP[0-9A-ZA-Z/:.]+') ---------------------------------------------------------------------------------------------------- http://sunwgneuqsoft.itpub.net/post/34741/447698 4, REGEXP_REPLACE <a>目标:替换表sunwg中的URL的地址为http://www.163.com/? SQL> select regexp_replace(id,'http[0-9a-zA-Z/:.]+','www.163.com') from sunwg; REGEXP_REPLACE(ID,'HTTP[0-9A-ZA-Z/:.]+','WWW.163.COM') ----------------------------------------------------------------------------------------------------------------------------------- <a href="www.163.com">常见SQL访问索引的方式</a> 从上面的例子可以看得出来这几个支持正则表达式的函数是十分强大的,合理的加以使用一定会使你写出的SQL更加简单高效。

17,086

社区成员

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

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