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

Tia*_*ias 1 regex groovy

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

def countVariables(str) {
    def pattern = ~'${sss}'
    def matcher = str =~ pattern
    print matcher.count
}
Run Code Online (Sandbox Code Playgroud)

现在问题.

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

groovy.lang.MissingPropertyException: No such property: sss for class: ConsoleScript83
Run Code Online (Sandbox Code Playgroud)

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

问候!

tim*_*tes 5

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

即:

countVariables( 'asidb ${sss} asodniasndin' )
Run Code Online (Sandbox Code Playgroud)

  • 另外我会像这样重写正则表达式模式:`def pattern =〜/\$\{sss \} /`这会转义符号$,{和}. (3认同)