安卓路径Pattern Regex问题 [英] Android pathPattern Regex issue

查看:112
本文介绍了安卓路径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’时,此模式失败

例如

  1. t-to-a列车
  2. A-to-T-列车
  3. A-to-ATA-列车
  4. 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问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆