2017-03-15 8 views
0

では正常に動作していないこんにちは、私は次の正規表現正規表現は、Groovyの

def formula = math:min(math:round($$value1$$ * $$value2$$)) 
def m = formula =~ /\$\$\w+\$\$/ 
println m.group(1) 

以上が理想的

今、次の文字列のため、この正規表現はregex101.com上の罰金が、同じ働き$$ $$をvalue1印刷する必要があります持っていますGroovyでは動作しません。理想的にはMatcher APIを使用して$$ value1 $$と$$ value2 $$という2つのグループを見つける必要がありますが、そうではありません。

Regexに問題はありますか?ご案内ください。前もって感謝します。

+0

@collinDこんにちは私の最新の編集を確認してください。 – u449355

+0

GroovyコードまたはJavaコードを表示します。 regex101はJava正規表現の構文をサポートしていないので、regex101で動作する正規表現はJavaでは動作しなくてもよいことに注意してください。 –

+0

それはGroovy、Javaではなく –

答えて

1

を返しますが、次のとおりです。

def formula = 'math:min(math:round($$value1$$ * $$value2$$))' 

私はあなただけしたいと思う:

List result = formula.findAll(/\$\$\w+\$\$/) 
1

正規表現の先頭と末尾にある/を削除すると、私はあなたの正規表現をJavaで試してみました。

public class RegexTest { 

    public static void main(String[] args) { 
    String regex = "\\$\\$\\w+\\$\\$"; 
    String test = "math:min(math:round($$value1$$ * $$value2$$)) "; 
    Pattern pattern = Pattern.compile(regex); 
    Matcher matcher = pattern.matcher(test); 
    while (matcher.find()){ 
     System.out.println(matcher.group()); 
    }  
    } 
} 

それはformulaを想定し

$$value1$$ 
$$value2$$