【发布时间】:2018-11-09 14:24:55
【问题描述】:
我遇到了一个特定正则表达式的问题,它在 Android Studio 中运行时返回的值与预期不同。
场景:
代码很简单:
val regex = "(?<=N|E|\\G)\\d{2}(?=\\d*$)".toRegex()
print("${regex.findAll("N2032354345").count()}")
这应该打印 5,因为此字符串 (https://regex101.com/r/6PDbkI/1) 中有 5 个匹配项,如果我们在 Ideone.com 或 Kotlin Playground 中运行,则结果是预期的 5。
理论:
Android Studio 中的正则表达式似乎无法使用\G 运算符(可能与Kotlin split with regex work not as expected 有关)
有人遇到过同样的问题吗?有没有办法将正则表达式更改为在 Android Studio 中没有失败的类似正则表达式?我错过了一些设置吗?
【问题讨论】:
-
对我来说听起来更像是一个错误,考虑到它在操场上运行良好
-
这就是我的想法@Zoe。您是否知道报告此类问题的最佳地点是什么?
-
这是正确的@WiktorStribiżew。但我正在为 Android Studio 开发,它不是返回 5,而是返回 1(这是 NOK)
-
我认为您可以使用
"(?<=[NE]\\d{0,100})\\d{2}(?=\\d*$)"之类的解决方法(您可以调整 100 的值)。 -
我可以确认该workarround 工作@WiktorStribiżew。但它似乎是一个丑陋的:/
标签: android regex android-studio kotlin