Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查正则表达式是否与可选组匹配_Java_Regex - Fatal编程技术网

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

Java 检查正则表达式是否与可选组匹配,java,regex,Java,Regex,我正在尝试匹配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.group

我正在尝试匹配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");
i、 e.匹配并捕获所有内容,从第一个
/
,直到您找到一个空格作为
请求URI


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

我知道我可以使用类似(.*)的东西,但我想知道这是否可行。我知道还有其他选项,但我想知道是否有可能计算出有多少组匹配。这只是一个例子:)