首页 > 解决方案 > 在子字符串正则表达式中查找字符串

问题描述

我在 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

我怎样才能使用正则表达式来做到这一点?

标签: regexscala

解决方案


可能这就是您要查找的包含字符串的行号,[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)

推荐阅读