如何从动态UPI支付链接中提取pa=至&间的内容?
从UPI支付链接中提取
pa参数的解决方案 如果要从UPI支付链接里提取pa=到下一个&之间的动态内容,普通字符串拆分方法很容易因为参数顺序变化、pa作为最后一个参数(无后续&)等场景失效,这里提供两种可靠的解决方法:
方法一:使用正则表达式
用正则可以精准匹配pa=开头到第一个&之前的所有内容,即使pa是链接里的最后一个参数也能正常提取。
匹配规则:pa=([^&]+)
pa=:匹配参数前缀([^&]+):捕获所有非&的字符,也就是pa的参数值
示例代码(Python):
import re upi_link = "upi://pay?pa=suyashvashishtha@axl&pn=Suyash%20Vashishtha&mc=0000&mode=02&purpose=00" match_result = re.search(r'pa=([^&]+)', upi_link) if match_result: pa_address = match_result.group(1) print(pa_address) # 输出:suyashvashishtha@axl
方法二:使用URL解析库
UPI链接本质符合URL规范,用专业的URL解析工具处理参数更稳妥,能自动处理参数顺序、编码等问题。
示例代码(Python):
from urllib.parse import urlparse, parse_qs upi_link = "upi://pay?pa=suyashvashishtha@axl&pn=Suyash%20Vashishtha&mc=0000&mode=02&purpose=00" parsed = urlparse(upi_link) params = parse_qs(parsed.query) # 获取pa参数值,参数不存在时默认返回None pa_address = params.get('pa', [None])[0] if pa_address: print(pa_address) # 输出:suyashvashishtha@axl
这两种方法都能适配各种动态场景,比如pa参数值为anyaddress0005446556@axl、newaddress@axl,或者pa位于链接参数的任意位置。
内容的提问来源于stack exchange,提问作者Anujfresco Fresco
相关产品推荐
相关产品推荐

