正则表达式入门

元字符

()

        将小括号中的当作一个原子进行匹配,不管小括号中放的是什么。如(abc|e)ar可以匹配abcar和ear。

[]

        匹配[]中的任意一个原子,如[41d]会匹配4,1,d三个字符。再如t[io]p会匹配tip和top两个字符串。

        [^]与[]相反,表示不匹配[]中的任意一个原子。

^与$

       匹配字符串的开头,如^s表示要匹配的字符串必然以s开关,否则不匹配;$类似,只不过它用于控制结尾。如

		String regex = "^\\s[0-9]+$";
		Pattern p = Pattern.compile(regex);
		Matcher matcher = p.matcher("234");
返回的就是false,因为^要求匹配的字符串必须以不可见原子开头。如果将"234"换成"[空格]234"就会匹配成功。

|

        用于匹配多个分支。如“q4|1”表示匹配"q4"或者"1"。

\

        转义字符。跟java等语言中的转义一样。如t\\p匹配的是t\p而不是tp,也不是t\\p。常用的特定含义的转义字符:


        其中\f表示分页符,\n表示换行符,\t表示制表符,\v表示垂直制表符,\r表示回车符。不可见原子(空格、换行等无可见内容的字符)的匹配。空格:直接输入了一个空格即可进行匹配。

        \b:匹配一个单词边界。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'.
        \B:匹配非单词边界。如

import re
s = "hellohu hu hui"
print re.sub(r"hu",'xx',s) # helloxx xx xxi
print re.sub(r"hu\b",'xx',s) # helloxx xx hui
print re.sub(r"\bhu\b",'xx',s) # hellohu xx hui
        \bhu\b表示是一个单词hu,而不是某一个单词内部的两个字母。

量词

        {n,m}前一个原子(有可能是单个字符,也有可能是通过()括起来的字符串)出现次数为[n,m];{n}前一个原子出现次数为n;{n,}前一个字符出现次数大于等于n次;+表示前一个字符出现次数大于等于1次;*表示前一个字符出现的次数要大于等于0;?表示前一个字符出现0次或者1次。

        例如(w+f){3,}匹配wfwfwf,但不会匹配wfff。

贪婪与非贪婪

        贪婪表示尽可能匹配多的字符,而非贪婪就是尽可能匹配少的字符。如:正则表达式为ad+,去匹配字符串"addddd",如果结果是addddd则是贪婪的(尽可能多的去匹配d字符),如果结果是ad则是非贪婪的(只取满足条件的最小字符)。

Pattern

        java中用来操作正则表达式的类。

        CASE_INSENSITIVE:忽略整体大小写。如果想忽略某个字符的大小写,可以在该字符前加?i。如

		       (?i)abc 表示abc都忽略大小写
  			a(?i)bc 表示bc忽略大小写
  			a((?i)b)c 表示只有b忽略大小写
        COMMENTS:忽略正则表达式中的空白。要注意:并不是忽略要进行匹配的字符串中的空白符,只是忽略正则表达式中的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值