正则表达式的用法

今天一个朋友发来一段字符串,要用正则表达来解析,尼玛,我朋友是搞java的,虽然我以前也搞Java,但是好久不搞了,但是对于正则表达式而言,解析的规则是一样的。

字符串为: oaMail/v1.6.4[164][HTC One S](android;4.4.1;Caixun_Beta;admin@oatest.cn;1)

要求:按照这个格式来解析

我好久没弄Java只要用数据库的方式来解决这个问题

SELECT regexp_substr('oaMail/v1.6.4[164][HTC One S](android;4.4.1;Caixun_Beta;admin@oatest.cn;1)',
                      '.+[/].+[[].+[]][[].+[]][(].+[;].+[;].+[;].+[;].+[)]') FROM dual;
 
注:这个在数据时完全可行的,单朋友说,在Java中不行,虽然好久不搞,但是还是会,谢了一个简答的程序测试了下,不行的原因是Java用匹配的时候,要注意转义,所以在Java中用时要注意这点。


对已正则表达式oralce的用法下面总结下:

oracle 正则表达式主要应用在这四个函数下:

regexp_substr(string,pattern,positon,occurrence,modifer) 其他一样    截取

regexp_like()           和sql中like差不多

regexp_replace()   替换

regexp_instr()        和instr相识

string 需要处理字符串

pattern 正则表达式

positon  起始位置

occurrence  匹配第几组

modifer 模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)

相比其他正则匹配,Oracle正则表达的函数,可以匹配第几个  

SQL> SELECT regexp_substr('(M71-M72)/M72','\w+',1,1),regexp_substr('(M71-M72)/M72','\w+',1,2) FROM dual;
 
REGEXP_SUBSTR('(M71-M72)/M72', REGEXP_SUBSTR('(M71-M72)/M72',
------------------------------ ------------------------------
M71 M72

常用的正则表达式相关知识,在Oracle中有一些特许写法,但是我认为这些就足够了,没必要记那么多

元字符
描述
\             
将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配一个换行符。“\n”匹配字符"n"。序列“\\”匹配“\”而“\(”则匹配“(”。
^            
匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$
匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
*
匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。
+
匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
?
匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。
{n}
n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,}
n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m}
m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
?
当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”&#x
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值