gpt4 book ai didi

java.lang.IndexOutOfBoundsException : No group 1 | Pattern matching

转载 作者:行者123 更新时间:2023-12-01 19:42:58 25 4
gpt4 key购买 nike

我正在尝试从 Accept header 中提取版本值,该 header 可以采用以下形式

"vnd.example-com.foo+json; version=1.1" 

这是我提取版本的代码

val resourceVersionPattern: Pattern = Pattern.compile("(?<=version=).*")

def getResourceVersion(acceptHeader: String): String = {
import java.util.regex.Matcher
val matcher: Matcher = resourceVersionPattern.matcher(acceptHeader)
if(matcher.find()) ("v" + matcher.group(1)).trim() else "v1.0"
}

当我调用上述旨在提取版本的函数时(例如可以是 v1.0 或 v1.5 或 v2.5 的形式)

 getResourceVersion("vnd.example-com.foo+json; version=1.1")

我收到以下异常:

java.lang.IndexOutOfBoundsException: No group 1
at java.util.regex.Matcher.group(Matcher.java:487)
at .getResourceVersion(<console>:12)
at .<init>(<console>:11)
at .<clinit>(<console>)
at .<init>(<console>:11)
at .<clinit>(<console>)
at $print(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:704)
at scala.tools.nsc.interpreter.IMain$Request$$anonfun$14.apply(IMain.scala:920)
at scala.tools.nsc.interpreter.Line$$anonfun$1.apply$mcV$sp(Line.scala:43)
at scala.tools.nsc.io.package$$anon$2.run(package.scala:25)
at java.lang.Thread.run(Thread.java:744)

我认为我的正则表达式中做错了什么,或者输入字符串包含一些非法字符,我无法以我有限的正则表达式知识来识别这些字符。帮我看看原因。

最佳答案

如果可以在不明确的情况下编写一个后视并做同样的事情,那么建议不要(ab)使用后视。

只需使用模式:

version=(.*)

您想要的内容将位于捕获组 1 中。

关于java.lang.IndexOutOfBoundsException : No group 1 | Pattern matching,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21484162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com