使用正则表达式匹配文本中的$ {variable}次出现

时间:2012-03-23 19:08:38

标签: regex groovy

我目前正在一个应用程序中工作,我需要在更大的字符串中查找所有出现的字符串,如$ {[0-9-a-zA-Z]}。这是我的方法:

def countVariables(str) {
    def pattern = ~'${sss}'
    def matcher = str =~ pattern
    print matcher.count
}

现在问题。

当我传递像" asidb $ {sss} asodniasndin"这样的字符串时,我得到:

groovy.lang.MissingPropertyException: No such property: sss for class: ConsoleScript83

我认为,鉴于Groovy $ {}中的属性,我遇到了这些冲突。 在这种情况下,我将不得不运行整个文本搜索美元符号并将其替换为其他内容?或者有更简单的方法吗?

问候!

1 个答案:

答案 0 :(得分:5)

你是否使用单引号,所以groovy不进行扩展,只给你一个字符串?

即:

countVariables( 'asidb ${sss} asodniasndin' )