Java 匹配带有或不带url参数的路径
我试图编写一个简单的正则表达式来匹配以下内容:Java 匹配带有或不带url参数的路径,java,regex,Java,Regex,我试图编写一个简单的正则表达式来匹配以下内容: /path/foo.html /path/foo.html?a=b /path/foo.html?a=b&b=c 但不是/path/foo.htmlx或任何不是foo.html+url参数的其他内容 我试过了 /path/foo.html(?:\?|$) 但它在我的java项目中似乎不起作用。我不太明白您要匹配什么,但如果您只想匹配URL部分,而不想匹配搜索字符串: /^[^?#]*/ #-哈希字符串也可以传递一些参数是否完全匹配 说明
/path/foo.html
/path/foo.html?a=b
/path/foo.html?a=b&b=c
但不是/path/foo.htmlx或任何不是foo.html+url参数的其他内容
我试过了
/path/foo.html(?:\?|$)
但它在我的java项目中似乎不起作用。我不太明白您要匹配什么,但如果您只想匹配URL部分,而不想匹配搜索字符串:
/^[^?#]*/
#-哈希字符串也可以传递一些参数是否完全匹配
说明此字符串是否与给定的正则表达式匹配
调用str.matches(regex)形式的此方法会产生与表达式完全相同的结果
因此,例如“/path/foo.html?a=b”。matches(“/path/foo.html(?:\?$)”)
返回false,因为字符串不在?
之后结束
对于@reconnect提供的URL部分使用regexp,您可以使用
“/path/foo.html(\\?*)”
:
^[^?]*
从开始到角色相遇的匹配
要搜索/path/foo.html,请使用:
^/path/foo.html
如果需要检查某个内容的某个部分是否在行中存在匹配项,请添加
^
-行的开头和$
行的结尾,在这种情况下,您应该注意条件结尾之间的字符,基本上被*
替换为您现在拥有的以及您想要匹配的内容?发布您的代码,以便我们可以调整它以使其工作。@anubhava尽管正则表达式有效,但可能在代码中使用错误。例如String.matches(String regex)
说明字符串是否与整个regex匹配,因此此regex将失败。是的,OP可能正在使用matches
method如果您不理解OP想要什么,请在注释中询问,不要基于假设回答。@Adelin我可以在没有你的情况下决定吗?@Adelin如果这对你更有利-好吧