Android intent-filter pathPattern 数字匹配

4
我正在为我的安卓应用程序添加一个意图过滤器,我希望它能捕获到请求:http://www.somedomain.com/[numericValue]。我只想捕获路径是数字的请求,如果有文本,我不关心它。
我尝试了[0123456789]*的pathPattern,但没有成功。这个有可能实现吗?

虽然不切实际,但你可以尝试使用类似于 http://www.somedomain.com/0*1*0*2*0*3*0*4*0*5*0*6*0*7*0*8*0*9*1*1*2*1*3*1*4*1*5*1*6*1*7*1*8*1*9*2*2*3*2*4*2*5*2*6*2*7*2*8*2*9*3*3*4*3*5* 的暴力破解方法。 - KTibow
很遗憾,这似乎不起作用。我尝试过了,但发现一个简单的情况如/01只匹配/1或/01。这似乎是不可能的。我刚刚找到了一种方法-请看我的答案。 - Morten Holmgaard
2个回答

2

pathPattern不是完整的正则表达式。相反,它使用了“简单通配符”,其中*表示零个或多个紧随其后的字符--在您的情况下,表示零个或多个]字符。

我一时想不出如何将您所需的模式转换为可以轻松匹配“简单通配符”的内容。


0

我已经测试了KTibow的样例,但是它并没有起作用。

但是有一种方法可以绕过它,就是可以添加多个数据元素并像这样解决,这样你就可以得到所有以数字值开头的情况。虽然不完美,但根据文档似乎是唯一的选择,因为似乎不可能像/0*1*那样做些什么,因为在测试时它只匹配/1和/01,原因不明。

 <data
    android:host="example.com"
    android:pathPattern="/0.*"
    android:scheme="https" />
<data
    android:host="example.com"
    android:pathPattern="/1.*"
    android:scheme="https" />
<data
    android:host="example.com"
    android:pathPattern="/2.*"
    android:scheme="https" />
<data
    android:host="example.com"
    android:pathPattern="/3.*"
    android:scheme="https" />
<data
    android:host="example.com"
    android:pathPattern="/4.*"
    android:scheme="https" />
<data
    android:host="example.com"
    android:pathPattern="/5.*"
    android:scheme="https" />
<data
    android:host="example.com"
    android:pathPattern="/6.*"
    android:scheme="https" />
<data
    android:host="example.com"
    android:pathPattern="/7.*"
    android:scheme="https" />
<data
    android:host="example.com"
    android:pathPattern="/8.*"
    android:scheme="https" />
<data
    android:host="example.com"
    android:pathPattern="/9.*"
    android:scheme="https" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接