2015-07-07 2 views
0

Я хочу разбить строку camelCase с пробелами.Regex не подходит в Scala

"ClassicalMusicArtist" -> "Classical Music Artist"

я должен быть в состоянии сделать это, заменив "/([a-z](?=[A-Z]))/g" с "$1 " (regex101).

Но мое регулярное выражение не получает никаких совпадений:

val regex = "/([a-z](?=[A-Z]))/g".r 
val s = "ClassicalMusicArtist" 

regex.replaceAllIn(s, "$1 ") // -> Returns "ClassicalMusicArtist" 
regex.findFirstIn(s) // -> Returns None 

Что я делаю неправильно? Я использовал регулярное выражение на другом языке с успехом и не могу понять, почему я не получаю никаких совпадений.

+0

Никаких разделителей не требуется, посмотрите [документы] (http://www.scala-lang.org/api/2.11.5/index.html#scala.util.matching.Regex). –

ответ

1

Хорошо, я понял.

В scala регулярное выражение должно быть val regex = "([a-z](?=[A-Z]))".r без ведущего / и модификатора.

+2

Чтобы быть более точным, символы '/', которые вы часто видите в регулярном выражении, являются просто артефактами того факта, что на других языках есть литералы регулярных выражений, и они используют символ '/' как символ цитирования для литерала. Они не являются частью выражения. –

Смежные вопросы