gpt4 book ai didi

java - 检查正则表达式是否与可选组匹配

转载 作者:行者123 更新时间:2023-12-01 13:52:35 26 4
gpt4 key购买 nike

我正在尝试匹配 HTTP 请求行并获取请求的项目。我有以下正则表达式:

Pattern regex = Pattern.compile("GET /(\\w+\\.\\w+)? HTTP/1.1");

如果您检查它,您会注意到一个可选组(\\w+\\.\\w+)?。当我发送文件时,例如 GET/index.html HTTP/1.1 它可以正常工作并且 matcher.groupCount() 返回 1。问题是当我发送诸如 GET/HTTP/1.1 之类的内容时。我不知道如何检查该组是否已匹配,因为 matcher.groupCount() 也返回 1 。我怀疑 groupCount() 函数返回正则表达式中的组数,无论它们是否存在于解析的字符串中。

谢谢

最佳答案

实际上您不需要在此处使用可选组。这个正则表达式会更适合你:

Pattern regex = Pattern.compile("GET (/\\S+) HTTP/1\.1");

即匹配并捕获从第一个 / 开始的所有内容,直到您按空格作为 REQUEST URI

请记住,Web 请求还可以包含 ?& 等查询参数,而 \\w+\\.\\w+ 则不能一个很好的正则表达式来匹配它们。

关于java - 检查正则表达式是否与可选组匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19858174/

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