在子字符串Regex中查找字符串

在子字符串Regex中查找字符串,regex,scala,Regex,Scala,我在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-E

我在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\u RES]
的行数,例如在我的数据帧中,包含字符串
[CS\u RES]
的行数是
3

如何使用Regex执行此操作?

请尝试以下操作:

val str = "your input string"

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

请注意,转义字符
\
也需要转义。

可能就是您要查找的包含字符串的行号,
[CS\u RES]
让我们将您的
dataframe
数据放入文本文件,将
datafile.txt
放入 scala的当前目录。那么

val lines = io.Source.fromFile("datafile.txt").getLines.toArray
将所有行读入字符串数组,
array[String]
。 现在,下面的命令将处理包含所需 字符串并返回包含
[CS\u RES]
的行号列表。我查过了 此命令放置您在
问题中提供的
样本数据
,并为我提供一个
列表[Int]
,行号为
1,3和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)

Scala for Apache SparkWhat版本的Spark?数据是否仍在数据帧中,或者您是否已将字符串提取到列表中?我认为此正则表达式是错误的,因为当我将其应用于数据帧时,它返回一个小数字,另一方面,当我计算包含字符串的行数时[CS_RES]是一个大数字。如何更正它以计算字符串[CS_RES]中包含的行数,如我上面的示例所示,3行包含此值String@vero-正则表达式代码工作正常。您很可能会多次看到一些包含
[CS\u RES]
的行,并且这些行都被计为一行。您应该分析行的真正起点和终点,以及输入字符串/文件中实际包含的行尾分隔符。是的,我应该分析行的起点和终点,谢谢