Ped*_*ira 5 regex android kotlin android-studio
我遇到了一个特定正则表达式的问题,它在Android Studio中运行时返回的值与预期不同.
场景:
代码很简单:
val regex = "(?<=N|E|\\G)\\d{2}(?=\\d*$)".toRegex()
print("${regex.findAll("N2032354345").count()}")
Run Code Online (Sandbox Code Playgroud)
这应该打印5,因为此字符串中有5个匹配项(https://regex101.com/r/6PDbkI/1),如果我们在Ideone.com或Kotlin Playground中运行,结果是预期的5.
理论:
似乎Android Studio中的正则表达式未能使用\G运算符(这可能与Kotlin拆分与正则表达式工作不符合预期)
有人遇到同样的问题吗?有没有办法将正则表达式更改为Android Studio中没有失败的类似的正则表达式?我错过了一些设置吗?
AndroidPattern文档列出\G了受支持的运算符:
\G上一场比赛结束
因此,这听起来像是 Android Studio 的错误。
在修复之前,您可以为您的场景使用一种变通方法,其中只涉及输入中的十几个数字:
val regex = "(?<=[NE]\\d{0,100})\\d{2}(?=\\d*$)".toRegex()
Run Code Online (Sandbox Code Playgroud)
模式匹配:
(?<=[NE]\d{0,100})- 紧跟在NorE和 0 到 100 位数字之前的位置\d{2} - 两位数(?=\d*$) - 后跟 0 个或多个数字到字符串的末尾。| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |