шаблон регулярных выражений scala - PullRequest
0 голосов
/ 04 июня 2018

У меня есть строка

val path = "/bigdatahdfs/datalake/raw/lum/creditriskreporting/iffcollateral/year=2017/month=05/approach=firb/basel=3/version_partition=8/vFirbtestCollateralBaselIIIData_201705_8_20170620.txt.gz"

шаблон

.*version_partition=(\d+)(.*) 

работает, как и ожидалось в regex101.com.

Требуется извлечь две строки.один из них равен «8» (точно после version_partition =), а другой - «/vFirbtestColficialBaselIIIData_201705_8_20170620.txt.gz"

В REPL Scala тот же шаблон дает scala.MatchError.Я новичок в использовании регулярных выражений.Не уверен, что я здесь делаю не так.Пожалуйста, помогите мне здесь.

код скалы:

val P = """.*version_partition=(\d+)(.*)""".r

val P(ver,fileName) = path;

Я пробовал также использовать / g и / m flag.Это не сработало.

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Ваш код работает: https://scalafiddle.io/sf/Xz1Y0Ze/0

Вам не нужен флаг / g и / m.

  • / g ==> Выполните глобальное соответствие (найдите все соответствиявместо остановки после первого совпадения)
  • / m ==> Выполнить многострочное сопоставление

код:

val path = "/bigdatahdfs/datalake/raw/lum/creditriskreporting/iffcollateral/year=2017/month=05/approach=firb/basel=3/version_partition=8/vFirbtestCollateralBaselIIIData_201705_8_20170620.txt.gz"

val P = """.*version_partition=(\d+)(.*)""".r

val P(ver,fileName) = path;

println(ver)
println(fileName)
0 голосов
/ 04 июня 2018

Вы случайно добавили пробел в конце.

https://regex101.com/r/FLkZEu/2

.* в начале регулярного выражения бесполезно

0 голосов
/ 04 июня 2018

Попробуйте использовать совпадение:

val path = "/bigdatahdfs/datalake/raw/lum/creditriskreporting/iffcollateral/year=2017/month=05/approach=firb/basel=3/version_partition=8/vFirbtestCollateralBaselIIIData_201705_8_20170620.txt.gz"
val P = """.*version_partition=(\d+)(.*)""".r

path match {
  case P(a,b) ⇒ 
    println(a)
    println(b)
}

Тест

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