regex - 在子字符串正则表达式中查找字符串
问题描述
我在 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
。
我怎样才能使用正则表达式来做到这一点?
解决方案
可能这就是您要查找的包含字符串的行号,[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)
推荐阅读
- css - 在我现有的项目中,我看到了 SASS 文件中的代码和平。但我不明白他们为什么使用这些前缀,如 &。..在SASS
- java - 如何在 Spring Boot 中自动装配 OkHttpClient bean?
- python - 如何通过pyspark将稀疏矩阵保存到hive表中
- unit-testing - Golang:如何生成 net/http 超时错误以执行单元测试
- javascript - 如何在Angular 7中修复“分配给订阅()函数中返回未定义值的属性”
- cordova - 如何更改科尔多瓦 Windows 10 项目中的最低 Windows 目标版本?
- javascript - javascript复选框功能无法正常工作
- java - Java - Intellij 无法编译 GUI - 退出值 1
- arcgis - 如何将用户绘制的图层保存到文件(.shp 或 .tiff)中?
- javascript - 在给定位置显示图像