删除第二个逗号之前的文本('',")字符串替换模式

时间:2017-07-19 21:53:57

标签: regex string scala str-replace

我们如何删除以第二个逗号开头的行之前的文本(示例中的第5行),如何使用正则表达式执行此操作? 例如:

,
abc,xyz,ggg,nrmr
cde,jjj,kkkk,iiii,tem,posting
234,mm/dd/yy
,
454654,output2,sample
45646,output1,non-sample
16546,225.02
ABC,2.98

预期:

454654,output2,sample
45646,output1,non-sample
16546,225.02
ABC,2.98

1 个答案:

答案 0 :(得分:1)

好像你可以使用

val s = """,
abc,xyz,ggg,nrmr
cde,jjj,kkkk,iiii,tem,posting
234,mm/dd/yy
,
454654,output2,sample
45646,output1,non-sample
16546,225.02
ABC,2.98"""
val res = s.replaceFirst("(?sm)\\A(.*?^,$){2}", "").trim()
println(res)
// => 
//   454654,output2,sample
//   45646,output1,non-sample
//   16546,225.02
//   ABC,2.98

请参阅Scala demo

模式详情

  • (?sm) - s允许.匹配字符串中的所有字符,包括换行符,m使^$匹配开始/分别为
  • \\A - 字符串的开头
  • (.*?^,$){2} - 出现2次:
    • .*? - 任意0个字符尽可能少到最左边
    • ^,$ - 仅包含,的行。