Найти строку в подстроке Regex - PullRequest
0 голосов
/ 27 июня 2018

У меня есть столбец в Scala DataFrame, который содержит много строк, таких как:

[Z12M1E][AGORA][Essai][CS_RES]ECO-56417-Escalade-ECO-56344-#incidentMajProduit#  Y2103      Y2103B0    S82NE      INCIDENTE             20180305   030403 20180305   030512

[Z12M1E][AGORA][Essai]ECO-56417-Escalade-ECO-56344-#incidentMajProduit#  Y2103      Y2103B0    S82NE      INCIDENTE   [CS_RES]       20180305   030403 20180305   030512


[Z12M1E][AGORA][20180305]ECO-56417--ECO-56344-#incidentMajProduit#  Y2103      Y2103B0    S82NE      INCIDENTE       Escalade 20180305   030512

[Z12M1E][AGORA][20180305]ECO-56417--ECO-56344-#incidentMajProduit#  Y2103      Y2103B0    S82NE      INCIDENTE   [CS_RES]          Escalade 20180305   030512

Я хотел бы вычислить номер строки, содержащей строку [CS_RES], например, в моем кадре данных номер строки, содержащей строку [CS_RES], равен 3.

Как я могу сделать это с помощью Regex?

Ответы [ 2 ]

0 голосов
/ 22 июля 2018

Может быть, это то, что вы ищете для номеров строк, содержащих строку, [CS_RES] Позвольте нам поместить ваши dataframe данные в текстовый файл, datafile.txt в текущий каталог scala. Тогда,

val lines = io.Source.fromFile("datafile.txt").getLines.toArray

будет читать все строки в lines массив строк, Array[String]. Теперь следующая команда обработает строки, содержащие строка и возвращает список номеров строк, содержащих [CS_RES]. Я проверил эта команда помещает sample data, который вы указали в question, и дает мне List[Int] с номерами строк 1,3 and 8.

scala> lines.map(x=>if(x.matches(""".*\[CS_RES\].*"""))
             (lines.indexOf(x)+1)else 0).toList.filter(_!=0)
res50: List[Int] = List(1, 3, 8)
0 голосов
/ 27 июня 2018

Попробуйте это:

val str = "your input string"

val reg = ".*\\[CS_RES\\].*".r
reg.findAllIn(str).length 

Обратите внимание, что экранирующий символ \ также должен быть экранирован.

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