我们如何删除以第二个逗号开头的行之前的文本(示例中的第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
答案 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个字符尽可能少到最左边^,$
- 仅包含,
的行。