Как использовать регулярные выражения в Scala? - PullRequest
3 голосов
/ 07 марта 2019

Я изучаю Scala и Spark и хочу получить числа из строки. И для этого я использую регулярное выражение. И узнал о странной сигнатуре использования регулярных шаблонов в Scala.

Вот мой код:

val myString: String = "there would be some number here 34."
val pattern = """.* ([\d]+).*""".r  
val pattern(numberString) = myString
val num = numberString.toInt
println(answer)

Код работает нормально, но кажется немного странным и менее читабельным.

Есть ли другой способ сделать это в Scala? Или любой другой синтаксис, который я могу использовать?

1 Ответ

2 голосов
/ 07 марта 2019

Способ сопоставления с шаблоном, который вы извлекаете, является довольно трудоемким: поскольку шаблон должен соответствовать всей строке, вы должны добавить .* на обоих концах регулярного выражения, и это вызывает большой возврат. Вы также добавили пробел, чтобы убедиться, что первый .* не съел все цифры слева и возвращает все найденные 1+ цифры.

Если вы ищете первый матч, используйте findFirstIn:

val myString: String = "there would be some number here 34."
val numberString = """\d+""".r.findFirstIn(myString)
val num = numberString.get.toInt
println(num) // => 34

См. Демоверсию Scala .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...