我在DataFrame Scala中有一列,其中包含许多这样的字符串:
[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做到这一点?
答案 0 :(得分:1)
这可能是您要查找包含字符串[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)
。
Console.ReadLine()
答案 1 :(得分:0)
尝试一下:
val str = "your input string"
val reg = ".*\\[CS_RES\\].*".r
reg.findAllIn(str).length
请注意,转义字符\
也需要转义。