【发布时间】:2019-02-25 07:18:02
【问题描述】:
Android 5 及更低版本在运行时从我的正则表达式模式中获取错误:
java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 4:
(?<g1>(http|ftp)(s)?://)?(?<g2>[\w-:@])+(?<TLD>\.[\w\-]+)+(:\d+)?((|\?)([\w\-._~:/?#\[\]@!$&'()*+,;=.%])*)*
这里是代码示例:
val urlRegex = "(?<g1>(http|ftp)(s)?://)?(?<g2>[\\w-:@])+(?<TLD>\\.[\\w\\-]+)+(:\\d+)?((|\\?)([\\w\\-._~:/?#\\[\\]@!$&'()*+,;=.%])*)*"
val sampleUrl = "https://www.google.com"
val urlMatchers = Pattern.compile(urlRegex).matcher(sampleUrl)
assert(urlMatchers.find())
这种模式在 21 岁以上的所有 API 上都非常有效。
【问题讨论】:
-
没有听说过正则表达式依赖于 API!这是有趣的。您是否尝试过为此使用 kotlin 库? kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-regex/…
-
是的!但不幸的是我得到了同样的错误。 @user8159708
标签: java android regex kotlin android-5.0-lollipop