【问题标题】:Java - regular expression to match between two /Java - 在两个/之间匹配的正则表达式
【发布时间】:2011-04-04 07:18:26
【问题描述】:

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

【问题讨论】:

    标签: java regex


    【解决方案1】:

    /*/ 在我看来更像是一个 glob 而不是正则表达式。这将匹配任意数量的斜线,而我希望您希望它匹配斜线之间的任意数量的字符。试试/.+/,或者如果你想让它只匹配一个级别(即如果 /app/webapp/users/foo/bar/baz/resource/path 不应该匹配),也可以尝试/[^/]+/

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

    【讨论】:

    • 他可能希望/.+/(或更复杂的/[^/]+/)避免在他指定的两个斜线之间匹配额外的斜线。
    • @Joachim:这不正是我所说的吗?我不确定您建议的更改是什么。
    • 糟糕,我确定我为第一个表达式输入了/.+?/。我就是这个意思。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多