2015-10-13 282 views
1

我有串状:阶正则表达式:找到两个字符串之间串

val str = "$(foo) == 123 AND $(bar) == 321" 

我要分析此得到:List(foo, bar)。什么是最好的方法来做到这一点?

这是我的尝试:

val p = """\$\(.*?\)""".r 
p.findAllIn(str).toList 

但结果我得到的是:List($(foo), $(bar))

我怎样才能得到List(foo, bar)

回答

1

使用向后看了否定的字符类:

val p = """(?<=\$\()[^()]*""".r 

IDEONE demo

(?<=\$\()向后看将确保我们只启动一个$(后配套,我们会匹配所有字符(0或更多),而不是()[^()]*

相关问题