Android:正则表达式在真实设备上运行时抛出PatternSyntaxException但在单元测试时没有抛出[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我正在研究Android项目,我想删除/替换我的url中的某个param,即

PARAMS = 12143

所以我写了一个正则表达式来评估网址

(?<=[?&])?params=(.*?)(&|$)

它完美地适用于在线测试工具,我也为它编写了单元测试,它通过没有任何问题。样品测试如下

https://example.com/xyz - >不匹配

https://example.com/xyz?params = 123456 - >匹配

https://example.com/xyz?another=124&params = 123456 - >匹配

https://example.com/xyz?another=124&params = 123456&yetanother = 2425 - >匹配

然后我在真实设备上测试了它,Android抛出了带有消息的PatternSyntaxException

索引10附近的regexp模式中的语法错误(?<= [?&])?params =(。*?)(&| $)

找出可选的?在params引起异常之前。我删除了它,它适用于单元测试和真实设备。

所以这是我的问题:为什么我的正则表达式失败了?仅在真实设备上,而不是单元测试或在线工具?

android regex
1个回答
0
投票

你需要像这样逃避你的特殊char ?

(?<=[?&])\\?params=(.*?)(&|$)
© www.soinside.com 2019 - 2024. All rights reserved.