正则表达式入门

   在web开发中正则表达式经常被使用,前台后台都支持正则,之前都是用到某个特定的功能去网上搜对应的表达式。最近项目用到,做完后做了一个系统的正则表达式学习,总结一下。


我写的肯定不是最全面的,而是入门的,让你感觉正则很简单

  • 正则表达式的作用是“匹配某种格式的文本”,匹配的作用是对文本进行处理,如:网页内容去标签、修改内容,基本上都是用replace来对匹配的文本处理。
  • java中可以用如下方式来替换文本。
String inputStr; //要替换的字符串
String replaceStr; //要替换成的字符串
Pattern pattern = Pattern.compile(regExp); 
Matcher matcher = pattern.matcher(inputStr); 
matcher.replaceAll(replaceStr);
  • 重点来了:如何写正则。首先明确下正则里有哪些元素,如"^[A-Za-z]+$"这样一个表达式,如何去理解。列举的不全,只为理解,要更深入就要去查更全的资料。
  1. 通配符:
    字符通配符 如 . (任何)  \s(空白符)   \w(大小写字母)  \d(数字) 这些都是常用的,可以记住。而\S就是非空格符,代表反义,其余可以类推。 当然还有常规的a就是匹配a,如果是\则需要用\\来代表
    位置通配符 ^( 开头) $(结尾) \b(间隔)  间隔意思是前后不都是\s 。举个例子,\ba 只匹配"aaa a aa"中加粗的a,但注意,\b不等于\s一个代表位置,可以想象为a与前面空格之间的一个位置。
  2. 括号的含义: (abc) 代表分组,什么意思呢, abcd 中的abc会被这个正则所匹配到(以下用~来代表匹配到

       [abc]代表单字模式,就是匹配单个字,abcd中的a ~ [abc]  b~[abc] c~[abc]。

                       {abc}代表数量,更好理解了{5}就是出现5次,{2,4}就是出现了2到4次,*和+特殊,*是{0,无穷},+是{1,无穷}

             组合起来举几个例子:

             (abc)[abc]{3}  ~ abcbac, abcbbb, abcaaa,abccaa.......

                 (ab[ab]c*){2} ~  abaccccabbcccccc

  3. 逻辑:地球人都懂, | (或)。 例子a|b   (ab)|(ac)
  4. 贪婪与懒惰: a.*b a.*?b 匹配abbbbb,前者~abbbbb, 后者~ab。后者懒,只要碰到满足的就够了。
  5. 断言:a(?=b)是什么意思呢,后面那个就是断言,代表跟着的是b。匹配ab中的a,但不匹配ac中的a。意思就是后面跟着b的a。
  6. 注释(?#comment)。注释大家都懂。

这下就可以去看例子了,多看几个自己也会写了。

 

 

java中如何使用正则表达式               
String string = "<span class=\"dddd\">P</span><span class=\"eeee\">P</span>";
        Pattern p = Pattern.compile("<[^>]*?>");
        Matcher m = p.matcher(matchScore);
        string = m.replaceAll("");
        System.out.println(string);
 
输出 PP
首先定义个Pattern ,然后根据Pattern去match目标字符串。
m.group()表示匹配到的串
m.replaceAll("")也很常用


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值