2015-10-13 184 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或更多),而不是()[^()]*

相關問題