正则匹配英文括号( 中文括号【 里面的内容 封装工具类

"本文介绍了如何使用Java的正则表达式从字符串中提取括号内的内容,包括中文括号。展示了如何编写正则表达式`(?<=【)[^】]*|(?<=()[^)]+`来匹配括号内的非空白字符,并给出了一个实用的示例代码。同时,还提供了一个检查字符串是否以特定前缀`AB`开头并跟随10位数字的正则表达式`(^ABd{10}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

日常开发中遇到的一个需求:

String msg="这是一个字符串,括号在后面(这是括号里面的内容,你能把我取出来吗?),括号在前面,第二个括号(咋咋咋),第三个括号【这是中文中括号】"

如何取出这个字符串括号里面的内容:

    public static List<String> extractMessageByRegular(String msg) {
        List<String> list = new ArrayList<String>();
        //正则
        Pattern p = Pattern.compile("(?<=【)[^】]*|(?<=\\()[^\\)]+");
        Matcher m = p.matcher(msg);
        while (m.find()) {
            list.add(m.group());
        }
        
        return list;
    }

写了一个正则 :

(?<=)[^]*|(?<=\()[^\)]+

(?<=)[^]*|(?<=\()\S+(?=\))

非常的好用!!博主亲测。
非常的好用!!博主亲测。

简单解释一下这个正则的意思:


(?<=\()\S+(?=\)): 就是匹配以 (开头, )结尾的括号里面最少有一个非空白字符的串, 但不包括开头的(和结尾的)

(?<=\() 判断是否以括号开头,但不包含括号

\S  匹配任何非空白字符

|: 或的意思


然后这个正则是用了一个叫: 零宽度断言 的东西,你可以去看看


正则判断字符串是否以某个特定字符开头

写一个正则,判断之后的字符串是不是以 AB开头…,然后后面还有10位数字

public class RuleUtils {

    private static final Pattern RULE = Pattern.compile("(^AB\\d{10}$)");

    public static Boolean check(String data) {
        int length = data.length();
        if (length == 12) {
            RULE.matcher(data).find();
        }
        return false;
    }
}
\\d代表匹配数字,

{10}代表正好匹配次数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值