【问题标题】:Regex to match particular HTTP header value in Java [duplicate]正则表达式以匹配 Java 中的特定 HTTP 标头值 [重复]
【发布时间】:2023-03-18 18:24:02
【问题描述】:

上下文:我正在开发 Automate(Android 应用)中的自动化流程。我在字符串中有curl 的输出,列出了带有值的标题。我想用正则表达式解析 Location 标头值。

Foo: bar
Location: http://localhost
Abc: xyz

如何使用单个正则表达式获取我的 http://localhost 值?除了 Android 应用程序的上下文,我在 Intellij 中针对 jdk8 进行了尝试:如果正则表达式在那里工作,它也应该在应用程序中工作。我已经阅读了手册的某些部分(了解过程中不情愿的量词),但没有任何效果。我的最后一次尝试是(?iums).*?^Location:\s*(https://\S+)$.*,但是由于某种原因我仍然无法匹配。

非常感谢

编辑:为方便起见:

public static void main(String[] args) {
    String match = Pattern.compile("(?iums).*?^Location:\\s*(https://\\S+)$.*")
        .matcher("Foo: bar\nLocation: https://foo.bar\nabc: xyz")
        .group(1);
    System.out.println(match);
}

奇怪的是,Intellij 声称它确实匹配:

【问题讨论】:

  • 您忘记使用.find()matches() 运行匹配器
  • @WiktorStribiżew 确实是这样,谢谢

标签: java android regex


【解决方案1】:

我会做其他事情,您可以使用 HTTP 客户端提交请求,并以编程方式解析响应。

存在许多候选者,您可以使用 Apache Http Client https://hc.apache.org/httpcomponents-client-ga/

希望对你有帮助。

【讨论】:

  • 不,我仅限于 Android/busybox shell 命令和 Automate 的 API
猜你喜欢
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 2023-03-24
相关资源
最近更新 更多