JAVA正则表达式

最近项目需要,需要用到正则表达式,我们需要匹配String中的某个特定标签,然后依次替换,替换的东西每次都不一样。

正则表达式基本知识

我这里记录的是正则表达式基本符合含义,主要是方便查阅,如果想看详细说明的可以点击正则表达式30分钟入门教程

字符含义字符含义
.匹配除换行符以外的任意字符 
\w匹配字母或数字或下划线或汉字\W匹配不是字母、数字、下划线、汉字的字符
\s匹配任意的空白符\S匹配任意不是空白字符的字符
\d匹配数字\D匹配非数字
\b匹配单词的开头或结尾\B匹配不是单词开头或结尾的位置
^匹配字符串的开始

$匹配字符串的结尾


符号含义
*重复0次或更多次
+重复1次或更多次
重复0次或1次
{n}重复n次
{n,}至少重复n次或更多
{n,m}重复n至m次
[abc]匹配abc中的任意字符
()指定子表达式

正则表达式中注释写法:

(?#comment)  例如:2[0-4]\d(?#200-249)

正则表达式中的贪婪和懒惰:

表达式a.*b会匹配最长的String,但是如果a.*?b尽量匹配最少的字符串长度

符号含义
*?重复任意次,但尽可能少重复
+?重复1次或更多次,但尽量少重复
??重复0次或1次,但尽量少重复
{n,m}?重复n-m次,但尽量少重复
{n,}?重复n次以上,但尽量少重复

Matcher 类 :

Matcher 方法如下:

刚开始以为用replaceAll,但是不行,因为每个替换的都要不一样,后来发现这两个方法,完美解决了这个问题

appendReplacement(StringBuffer sb, String replacement) 

appendTail(StringBuffer sb) 

代码:

if(TextUtils.isEmpty(content))
            return "";
        StringBuffer buffer = new StringBuffer();
        Pattern atCompilePattern = Pattern.compile(ConfigManager.AT_PATTERN);
        Matcher atMatcher = atCompilePattern.matcher(content);
        while (atMatcher.find()) {
            String name=atMatcher.group(2);
            atMatcher.appendReplacement(buffer,name);
        }
        atMatcher.appendTail(buffer);
        return buffer.toString();


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值