代码之家  ›  专栏  ›  技术社区  ›  sirius78m

是什么做的。+运算符在这个代码中做什么?[副本]

  •  0
  • sirius78m  · 技术社区  · 2 年前

    我是groovy的新手,我看到了这段代码,这正是我所需要的,而且很有效,但我不知道为什么。

    我有一条这样的绳子: drink-all-of-the-water 其中单词“all”和“water”将被换成不同的单词,但其余单词将保持不变,我想将可选字符串保存到两个单独的变量中。

    例如:

    drink-some-of-the-ginger-beer
    var1 = some 
    var2 = ginger-beer
    

    或者:

    drink-a-glass-of-the-orange-juice
    var1 = a-glass
    var2 = orange-juice
    

    这很有效,但我不知道怎么做,有人能解释吗?这就像是在拯救一切。+在嵌套列表中?这是正确的吗?

    def myString = drink-a-glass-of-the-orange-juice
    def getVars = myString =~ /drink-(.+)-of-the-(.+)/
    def var1 = getVars[0][1]
    def var2 = getVars[0][2]
    

    var1返回 a-glass var2返回 orange-juice

    1 回复  |  直到 2 年前
        1
  •  0
  •   Emanuel M Barreiros    2 年前

    是的,基本上解释一下,在您的情况下,getVars正在接收匹配结果。

    getVars[0] 代表整个比赛,以及 getVars[0][1] getVars[0][2] 分别访问由第一捕获组和第二捕获组捕获的值。

    所以 (.+) 是一个捕获组,它匹配任何类型的一个或多个字符(换行符除外)。这个 . 方法 “任何类型” + 量词手段 “一个或多个” 周围的括号 .+ 使其成为一个捕获组,这意味着匹配的内容将被捕获,并且可以稍后访问。

    这个 summary of regular expressions 应该是一个更好的信息。