尝试在正则表达式查询(Java)中匹配零个或多个表达式

尝试在正则表达式查询(Java)中匹配零个或多个表达式,java,regex,Java,Regex,我正在为我的班级做一个项目,并且已经到了一个使用正则表达式的停止点。我试图根据RFC6265规定的一组特定规则创建一个cookie验证程序。 (这必须在单个正则表达式查询中完成) 我需要让我的正则表达式查询检查给定字符串末尾的任意数量的附加组件。 基本字符串将显示如下所示: Set-Cookie: ns1=alss/0.foobar^ 但它可以在末尾添加任意数量的额外语句,例如: Set-Cookie: ns1=; Domain=.srv.a.com-0 or Set-Cookie: lu=R

我正在为我的班级做一个项目,并且已经到了一个使用正则表达式的停止点。我试图根据RFC6265规定的一组特定规则创建一个cookie验证程序。 (这必须在单个正则表达式查询中完成)

我需要让我的正则表达式查询检查给定字符串末尾的任意数量的附加组件。 基本字符串将显示如下所示:

Set-Cookie: ns1=alss/0.foobar^
但它可以在末尾添加任意数量的额外语句,例如:

Set-Cookie: ns1=; Domain=.srv.a.com-0
or
Set-Cookie: lu=Rg3v; Expires=Wed, 19 Nov 2008 16:35:39 GMT; Path=/; Domain=.example.com; HttpOnly
我的正则表达式查询中有一个组件,我认为它应该与任何给定的可能添加项相匹配:

String cookie_av = "((" + expires_av + ")|(" + max_age_av + ")|(" + path_av + ")|(" + secure_av + ")|(" + httponly_av + "))";
其中expires\u av、max\u age\u av等都是字符串,表示根据特定要求查询这些附加语句。如果其中一个附加语句不符合这些规范,则该语句应该是不正确的,它必须使查询失败。这就是为什么我使用了一系列OR语句以及它们各自的字符串。以下是其中一个字符串httponly_av的示例:

String httponly_av = "HttpOnly";
这是作为自己的字符串写入的,因为写入时必须区分大小写

我的最终搜索查询如下:

String cookie_string = cookie_pair+"(; "+cookie_av+")*";
其中cookie_字符串(测试成功)表示:

Set-Cookie: ns1=alss/0.foobar^
但是,当使用我提供的测试用例进行测试时,它无法识别我正在搜索的任何cookie_av部分。我希望我能找到一些帮助,以了解如何使这个功能正确,以及为什么我所做的是错误的

编辑:以下是匹配字符串和不匹配字符串的示例: 匹配:

Set-Cookie: ns1=\"alss/0.foobar^\"
Set-Cookie: ns1=\"alss/0.foobar^\"; Expires=Tue, 18 Nov 2008 16:35:39 GMT
Set-Cookie: lu=Rg3v; Expires=Tue, 18 Nov 2008 16:35:39 GMT; Path=/; Domain=.example.com; HttpOnly
Set-Cookie: ns1=alss/0.foobar^;
Set-Cookie: ns1=alss/0.foobar^; httponly
以上所有匹配,第一个都有效,因为没有附加组件和分号 第二个具有有效的附加组件,并且没有尾随分号 第三个有多个有效的附加组件,并且没有尾随分号

不匹配:

Set-Cookie: ns1=\"alss/0.foobar^\"
Set-Cookie: ns1=\"alss/0.foobar^\"; Expires=Tue, 18 Nov 2008 16:35:39 GMT
Set-Cookie: lu=Rg3v; Expires=Tue, 18 Nov 2008 16:35:39 GMT; Path=/; Domain=.example.com; HttpOnly
Set-Cookie: ns1=alss/0.foobar^;
Set-Cookie: ns1=alss/0.foobar^; httponly
由于后面的分号,上面的第一个不匹配。分号应仅在后跟一个附加语句时存在。 第二个不匹配,因为httponly的附加声明未遵循httponly_av声明的案例要求