我的字符串如下:
val str = "$(foo) == 123 AND $(bar) == 321"
我想解析这个get:List(foo, bar)
。最好的方法是什么?
这就是我的尝试:
val p = """\$\(.*?\)""".r
p.findAllIn(str).toList
但我得到的结果是:List($(foo), $(bar))
。
我如何获得List(foo, bar)
?
答案 0 :(得分:1)
使用带有否定字符类的后视:
val p = """(?<=\$\()[^()]*""".r
请参阅IDEONE demo
(?<=\$\()
后视将确保我们仅在$(
之后开始匹配,并且我们将匹配(
和{{1}以外的所有字符(0或更多)与)
。