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

Remove the text before second comma ('',") String replace pattern

我们如何删除以第二个逗号开头的行之前的文本(示例中的第 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

看来你可以使用

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 使 ^$分别匹配行start/end
  • \A - 字符串的开始
  • (.*?^,$){2} - 出现 2 次:
    • .*? - 任何 0+ 个字符尽可能少到最左边
    • ^,$ - 仅包含 ,.
    • 的行