正则表达式截取指定字符串内容

本文介绍了一种使用正则表达式从HTML字符串中精确提取特定属性值的方法,并对比了使用String.substring方法的局限性。

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

获取某个字符串中某一部分的字符内容,通常大家会首先想到使用String.substring方法,但String.substring方法对于某些包含特殊字符和HTML标签的处理不是很完善。例如如下字符串,想要获取sign中的字符,用String.subString方法虽然也能拿到sign中的内容,但有缺陷....

String str="<form id='frmBankID' name='frmBankName' method='post' action='partner=\"2088121205591541\"&seller_id=\"2088121205591541\"&out_trade_no=\"FI104010001030900000007\"\n" +
                "&subject=\"?????\"&body=\"???-?? 1.6 MT\"&total_fee=\"0.20\"&notify_url=\"http://func91fcw.vfinance.cn/server/ALIPAY10401-VS.htm\"&service=\"mobile.securitypay.pay\"&payment_type=\"1\"\n" +
                "&_input_charset=\"utf-8\"&it_b_pay=\"30m\"&show_url=\"m.alipay.com\"\n" +
                "&sign=\"IaNZM3TOiUnJf%2B5%2FxBanH3PrNEONHUedwLwuICFWAE5lbEZZg%2Bp2zeo6D7O36PzhrRya%2BzyjumDNFEuaHyc79cXngkYeyo4%2FQA6ze0iKtQswVoGEl24%2BOkL%2BF%2FvOEmkapKaG%2FMGFn8cacu4XW39TD0KznUSJo1iF0kEC8dRWQVQ%3D\"\n" +
                "&sign_type=\"RSA\"'></form>";

String.substring截取:

int s=str.indexOf("sign=");
        int t=str.indexOf("&sign_type");
        String sign= str.substring(s+5,t-1);
        System.out.println("sign==="+sign);


正则表达式截取:

Pattern p = Pattern.compile("sign\\=\"(.*?)\"");//正则表达式
        Matcher m = p.matcher(str);
        while(m.find()) {
            System.out.println(m.group(1));//m.group(1)不包括这两个字符

        }

m.group()获取的是包含sign=在内的全部内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值