如何使用正则表达式删除第二个逗号开始的文本(例如示例中的第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
如何使用正则表达式删除第二个逗号开始的文本(例如示例中的第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演示。
模式细节:
(?sm)
- s
使.
匹配字符串中的任何字符,包括换行符,m
使^
和$
分别匹配行的开头/结尾\\A
- 字符串的开始(.*?^,$){2}
- 2次出现:
.*?
- 最少数量的任意0+个字符^,$
- 只包含,
的行。
"(?sm)\\A(.*?^,$){2}"
。 - Wiktor Stribiżew