문자열에서 ${*}
표현을 추출하고 싶습니다.scala regex : 문자열에서 표현식 추출
val example = "Hello ${foo.bar} World"
그러나 달러 기호와 중괄호는 표현식 구문의 일부이므로 탈출하려고했습니다.
val expr = "\\$\\{[a-zA-Z0-9\\w]*\\}".r
하지만이 작동하지 않습니다와 println
인쇄 아무것도 :
for (ex <- expr.findAllMatchIn(example)) println(ex)
누구나 무엇이 잘못 아이디어가있다? 더 우아한 정규식이 존재합니까? 당신이 foo.bar
에서 .
를 차지하지 않기 때문에이다
"" "\"\ $ [{^}] *. "" ". r은 매우 잘 작동하며 여러 표현식을 추출 할 수도 있습니다. 'val example2 = "hello $ {foo.bar} world $ {bar.foo}"'. 그러므로 나는이 대답을 받아 들인다. :) – Themerius
확실히 트리플 쿼트를 흔들어 라. 실수를 쉽게 발견 할 수 있습니다. –
첫 번째 해결 방안의 단점을 더욱 강조해야합니다. "}"의 반복이없는 경우에만 작동합니다. 두 번째 방법은 유일하게 안전한 방법입니다. –