Android pathPattern Regex issue(安卓路径Pattern Regex问题)
问题描述
我正面临一个与Android意图过滤器相关的问题,特别是。在具有路径模式的数据元素中 引用:https://developer.android.com/guide/topics/manifest/data-element
我需要匹配有效URL的模式,如
anything-to-anything-trains
fromString-to-toString-trains
下面提到的模式几乎运行得很好
<data android:pathPattern=".*to.*trains" />
<data android:pathPattern=".*to.*trains/" />
但是,当from或to包含关键字‘t’时,此模式失败
例如
- t-to-a列车
- A-to-T-列车
- A-to-ATA-列车
- ATA到AA列车
对于给定的问题,包括关键字‘t’在内的任何内容都应该使用路径模式进行匹配。你能建议我如何写出适合这种情况的句型吗?我是创建路径模式(正则表达式、通配符或模式全局)的初学者,但我在android:pathPattern
中使用的模式适用于正则表达式测试站点,但不适用于路径模式。
此外,我们是否可以支持带有特殊符号的正则表达式,如连字符‘-’?
我发现由于模式匹配器要求,符号#不起作用。
根据PATTERN_SIMPLE_GLOB,路径模式不会按照文档记录的方式工作,因为不需要转义Asterix。
单据:
因为‘’在读取字符串时用作转义字符 从XML(在将其解析为模式之前),您需要 双重转义:例如,文字""将写为";"; 而文字‘’将写为&\&Quot;。这基本上是 与在中构造字符串时需要编写的内容相同 Java代码。
注意:此问题与regex的工作与否无关。模式/正则表达式在regex测试站点上运行良好并不意味着它可以在Android平台上运行,因为Andriod Intent Filters在解析方面有一些限制。根据文档,它只有两个通配符。
要测试深链,请使用以下ADB命令:
亚行外壳程序am start-a android.intent.action.VIEW-d";Deep link"; [包名(可选)]
示例:
adb shell am start -a android.intent.action.VIEW -d "https://www.website.com/a-to-a-trains" com.website.sample.package
推荐答案
查看PATTERN_SIMPLE_GLOB
文档,您无能为力。
在此语法中,您可以使用‘*’字符与之前出现的零个或多个字符进行匹配。如果它前面的字符是‘.’它将匹配任何字符。字符‘’可以用作转义。这实际上只提供了正常正则表达式的‘*’通配符部分
所以这应该是可行的。
.*-to-.*-trains
这篇关于安卓路径Pattern Regex问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!