【发布时间】:2016-09-20 21:18:15
【问题描述】:
我有一个这种格式的网址:
http://www.example.com/path?param1=value1¶m2=value2
我需要一个正则表达式以任何顺序匹配路径和 params1 和 params2,但如果 param3 存在,那么我需要它失败:
String str1 = "/path?param1=value1¶m2=value2"; // This will match
String str2 = "/path?param2=value2¶m1=value1"; // This will match
String str3 = "/path?param1=value1¶m2=value¶m3=value3"; // This will not match
所以我尝试使用环视来匹配参数,但它失败了:
/path\?(?!param3)(?=param1=.*)(?=param2=.*)
有什么想法吗?
P.D.出于好奇,我正在尝试匹配 AndroidManifest.xml 文件中的特定 URL https://developer.android.com/guide/topics/manifest/data-element.html
【问题讨论】:
-
你能数出字符串中 & 的数量,如果它超过 1,那么你可以假设有超过 2 个参数吗?你可以完全跳过正则表达式。
-
我需要使用正则表达式,因为这是我可以应用的唯一规则来过滤数据元素developer.android.com/guide/topics/manifest/data-element.html
-
不能像
if (StringUtils.countOccurrencesOf(url, "&") > 1)那样做? -
@blahfunk 感谢您花时间回答,但我的正则表达式将被添加到 XML 文件中,所以我不能使用代码。特别是在 AndroidManifest.xml 中数据元素中的 android:pathPattern="string" 属性
-
别担心!谢谢! @blahfunk