Android:如何用正则配置pathAdvancedPattern不匹配/log/格式的DeepLink路径
Android DeepLink正则匹配排除
/log/路径 需求场景
需要匹配的URL路径:
demo.com/logData1demo.com/logSub2- 其他以
/log开头但不是/log/的路径
不需要匹配的URL路径:
demo.com/log/
当前配置问题
当前Manifest中的data配置使用正则/log[^/].*,但仍会匹配/log/,无法满足需求:
<data android:host="@string/deeplink_host" android:pathAdvancedPattern="/log[^/].*" android:scheme="https" />
正确正则写法
使用负向前瞻断言来精准排除/log/的情况,正确的正则为/log(?!/).*,替换后的配置如下:
<data android:host="@string/deeplink_host" android:pathAdvancedPattern="/log(?!/).*" android:scheme="https" />
正则说明
(?!/)是负向前瞻断言,它会检查/log之后的字符不是/:- 若
/log后紧跟/(即路径为/log/),断言不成立,整个正则不匹配; - 若
/log后是其他任意字符(如logData1中的D),断言成立,后续的.*会匹配剩余的所有路径字符。
- 若
内容的提问来源于stack exchange,提问作者Sandiri
相关产品推荐
相关产品推荐

