正则表达式记录

本文介绍如何使用正则表达式从HTML文本流中提取支付URL,解决保险公司收银台接口返回的HTML文本流中JS里的支付URL提取问题。

下午遇到一个问题,业务场景大致上是,保险公司收银台返回的接口是一个HTML文本流,不是支付url字符串,需要获取html文本流里JS里的支付url.Jsoup操作不了里面的script,于是想到了正则表达式。

找了正则表达式的书,研究了一下午写了出来凑合用了。

html文本截取部分大致如下,有中文、数字、符号、特殊字符,并且文本流里还有换行

window.location.href = 'https://mapi.alipay.com/gateway.do
?body=2&subject=安享一生尊享版&sign_type=MD5&notify_url=
https://axwxtest.95303.com/axPay/pay/apay/asyncNotify&
out_trade_no=AT20191101170558249891&return_url=https://
axwxtest.95303.com/axPay/pay/apay/syncNotify&sign=d7b3
a68f9b8639bea148809c21f98fbc&app_pay=Y&_input_charset=
utf-8&it_b_pay=404m&total_fee=0.01&service=alipay.wap.create
.direct.pay.by.user&seller_id=2088221369936773&partner=20882213
69936773&payment_type=1';\n"

正则表达式

(?m)http[\w\u4e00-\u9fa5\.\/?_\-=&:]+

代码demo如下

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @ClassName: RegTest
 * @Description: RegTest
 * @Author: pangning@58.com
 * @Date: 2019/11/7 15:56
 * @Version: 1.0
 **/
public class RegTest {
	// 支付链接正则匹配
    private static final String regex = "(?m)http[\\w\\u4e00-\\u9fa5\\.\\/?_\\-=&:]+";

    // 创建 Pattern 对象
    private static final Pattern r = Pattern.compile(regex);
	
    public static void main(String[] args) {

        String htmlStream = "window.location.href = 'https://mapi.alipay.com/gateway.do?body=2&subject=安享一生尊享版&sign_type=MD5&notify_url=https://axwxtest.95303.com/axPay/pay/apay/asyncNotify&out_trade_no=AT20191101170558249891&return_url=https://axwxtest.95303.com/axPay/pay/apay/syncNotify&sign=d7b3a68f9b8639bea148809c21f98fbc&app_pay=Y&_input_charset=utf-8&it_b_pay=404m&total_fee=0.01&service=alipay.wap.create.direct.pay.by.user&seller_id=2088221369936773&partner=2088221369936773&payment_type=1';\n" +
                "\t\t\t}";
       
        // 现在创建 matcher 对象
        Matcher m = r.matcher(htmlStream);
        if (m.find( )) {
            System.out.println("match value: " + m.group() );
        } else {
            System.out.println("not found");
        }
    }
}

 

总结一下:


[\b] 回退(并删除)一个字符Backspace键
\f 换页符
\n 换行符
\r 回车符
\t Tab键
\v 垂直制表符

\d  [0-9]
\D  [^0-9]

\w [a-zA-Z0-9_]
\W [^a-zA-Z0-9_]

\s [\f\n\r\t\v]
\S [^\f\n\r\t\v]

ASICII码也支持
\u4e00-\u9fa5  中文汉字

边界
\b   the cat is...    \bcat\b

^头  尾$
(?m)  分行匹配

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值