Android中使用pathAdvancedPattern正则配置DeepLink路径匹配问题
Android DeepLink 匹配指定前缀的正确配置方案
你之前的写法错误在于误用了字符类[]——字符类只能匹配单个字符,里面的|会被当作普通字符处理,而非逻辑或,所以无法匹配ba这类多字符前缀。
要实现匹配a、ba-bc、be-bz(排除bd)的需求,需要使用**分组()**来定义多字符的匹配规则,正确的pathAdvancedPattern写法如下:
<data android:host="@string/deeplink_host" android:pathAdvancedPattern="/(a|b[a-c]|b[e-z]).*" android:scheme="https" />
规则解释:
(a|b[a-c]|b[e-z]):通过分组()和逻辑或|定义三组匹配规则:a:匹配单字符前缀ab[a-c]:匹配ba、bb、bc(b后跟a到c的任意字符)b[e-z]:匹配be到bz(b后跟e到z的任意字符)
.*:匹配前缀后的任意字符
如果偏好更紧凑的嵌套写法,也可以写成:
android:pathAdvancedPattern="/(a|b([a-c]|[e-z])).*"
两种写法效果一致,都能精准匹配你需要的URL前缀,同时排除bd开头的链接。
内容的提问来源于stack exchange,提问作者Nikhil Reddy
相关产品推荐
相关产品推荐

