Regex для получения числа после последнего разделителя строки в Scala - PullRequest
0 голосов
/ 28 ноября 2018

Моя строка 889¦20457892¦955

Я хочу получить 955 в качестве вывода, и это мой код, но он дает None в качестве результата

val pattern = "(^¦*)$\\d+".r
val str = "889¦20457892¦955"
println(pattern findFirstIn str)

Этоправильное регулярное выражение?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Шаблон "\\d+$" достаточно, чтобы найти число в конце строки.

val pattern = "\\d+$".r
val str = "889¦20457892¦955"
println(pattern findFirstIn str)

Это работает, потому что оператор + в регулярном выражении равен жадный и соберет все символы, которые соответствуют предыдущему выражению.Это означает, что нет необходимости явно указывать разделитель.

0 голосов
/ 28 ноября 2018

Вы можете использовать

val pattern = """(?<=¦)\d+$""".r
val str = "889¦20457892¦955"
println(pattern findFirstIn str)

Здесь,

  • (?<=¦) - местоположение сразу после ¦
  • \d+ - 1+ цифр
  • $ - конец строки.

В качестве альтернативы вы можете просто разделиться с помощью символа ¦ и получить последний элемент:

println(str.split('¦').last)

См. Scala demo

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