Java-要在两个表达式之间匹配的正则表达式/

Java-要在两个表达式之间匹配的正则表达式/,java,regex,Java,Regex,我需要匹配所有传入请求,并根据请求URL过滤掉某些请求。目前我正在尝试使用一个正则表达式,如/app/webapp/users/*/resource/path来匹配/app/webapp/users//resource/path。但传入的请求似乎都与正则表达式不匹配。我尝试使用的正则表达式有什么问题?(我使用String类的matches方法进行比较)。/*/在我看来更像一个glob而不是regex。这将匹配任意数量的斜杠,而我希望您希望它匹配斜杠之间任意数量的字符。请尝试/.+/,或者如果希望

我需要匹配所有传入请求,并根据请求URL过滤掉某些请求。目前我正在尝试使用一个正则表达式,如
/app/webapp/users/*/resource/path
来匹配
/app/webapp/users//resource/path
。但传入的请求似乎都与正则表达式不匹配。我尝试使用的正则表达式有什么问题?(我使用String类的matches方法进行比较)。

/*/
在我看来更像一个glob而不是regex。这将匹配任意数量的斜杠,而我希望您希望它匹配斜杠之间任意数量的字符。请尝试
/.+/
,或者如果希望使其仅匹配单个级别(即if/app/webapp/users/foo/bar/baz/resource/path不应匹配),则可以尝试
/[^/]+/


编辑:正如Joachim提到的,只匹配单个级别的另一种方法是使用
/.+?/
使其成为“不情愿的”匹配。

/*/
在我看来更像一个glob而不是regex。这将匹配任意数量的斜杠,而我希望您希望它匹配斜杠之间任意数量的字符。请尝试
/.+/
,或者如果希望使其仅匹配单个级别(即if/app/webapp/users/foo/bar/baz/resource/path不应匹配),则可以尝试
/[^/]+/


编辑:正如Joachim提到的,只匹配一个级别的另一种方法是使用
/.+?/
使其成为“不情愿的”匹配。

他可能想要
/.+/.+//code>(或者更复杂的
/[^/]+/
)来避免在他指定的两个级别之间匹配额外的斜杠。@Joachim:这不是我说的吗?我不确定您建议的更改是什么。哎呀,我确定我为第一个表达式键入了
/.+?/
。这就是我的意思。他可能想要
/.+/
(或者更复杂的
/[^/]+/
)来避免在他指定的两个斜杠之间匹配额外的斜杠。@Joachim:这不正是我说的吗?我不确定您建议的更改是什么。哎呀,我确定我为第一个表达式键入了
/.+?/
。这就是我的意思。