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

Regex 删除第二个逗号(';';,";)字符串替换模式前的文本,regex,string,scala,str-replace,Regex,String,Scala,Str Replace,如何删除以第二个逗号开头的行(示例中的第5行)之前的文本,如何使用regex执行此操作? 例如: , 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

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

,
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

图案细节

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

请尝试“谢谢”,我们如何删除上面示例中第5行之前的文本?请尝试“非常感谢”,它工作得非常好,如果可能,您能解释一下(?sm)^(.*?^,$)正则表达式模式吗?实际上,有一个错误。您需要
“(?sm)\\A(.*?^,$){2}”