正则表达式使用记录

来源:互联网 发布:红色后代知乎 编辑:程序博客网 时间:2024/06/05 11:50

最近在处理url数据的时候,真正发现正则表达式的强大和便捷性,正则表达式语法很复杂。觉得有必要做下笔记,并再多找些例子学习下。
下面先记录一个例子,待学习后继续补充

http://mail.163.com/js6/main.jsp?sid=WBwGIYIxwvvXQLWdJAxxYlxgFIsxhotL&df=unknow#module=welcome.WelcomeModule%7C%7B%7D

通过下面一个表达式:

regexp_matches(url,'//(.*?)/')regexp_matches(url,'//(.*?)/(.*?)/')

分别得到

{mail.163.com}{mail.163.com,js6}

注:语言环境是pg数据库
regexp_matches函数获取到匹配的字符,形成数组
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 “oooo”,’o+?’ 将匹配单个 “o”,而 ‘o+’ 将匹配所有 ‘o’。
() 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。