【问题标题】:'+' and '?' consecutively in a regex'+' 和 '?'在正则表达式中连续
【发布时间】:2010-09-10 21:18:10
【问题描述】:

Java EE REST 规范 JAX-RS 描述了路径变量到正则表达式的转换,如 /customer/{id}

来自 JAX-RS 1.1 规范,第 19 页:

用包含指定正则表达式的捕获组替换每个 URI 模板变量,如果没有指定正则表达式,则替换为“([^/]+?)”。

java.util.regex.Pattern 的 Java API 文档说:

X?     X, once or not at all
X+     X, one or more times

那么,+? 是什么意思?

【问题讨论】:

    标签: java regex jax-rs


    【解决方案1】:

    ? 紧跟在 +* 之后意味着它不会贪婪。

    例如:
    (.*)f in "testftestf",第一组匹配"testftest"
    (.*?)f in testftestf",第一组匹配"test"


    资源:

    【讨论】:

    • 澄清一下,非贪婪表达式是匹配最短的表达式,而贪婪表达式是匹配最长的表达式。
    • 谢谢,我不知道。但是在这种情况下([ˆ/]+?) 是什么意思?据我了解,所有内容都已阅读到下一个/,是否贪婪。
    • 在这种情况下,[ˆ/]+ 部分会很懒惰,并尝试使用 [^/]* 仅捕获一个字符(+ 至少为一个)?什么都不会被抓住。
    猜你喜欢
    • 2017-07-24
    • 2014-05-20
    • 1970-01-01
    • 2017-03-12
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多