Regex 删除第二个逗号(';';,";)字符串替换模式前的文本
如何删除以第二个逗号开头的行(示例中的第5行)之前的文本,如何使用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
,
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+字符尽可能少,直到最左边*?
-仅包含^,$
的行,
“(?sm)\\A(.*?^,$){2}”