删除第二个逗号 ('',") 之前的文本 字符串替换模式
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+ 个字符尽可能少到最左边
^,$
- 仅包含 ,
. 的行
我们如何删除以第二个逗号开头的行之前的文本(示例中的第 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+ 个字符尽可能少到最左边^,$
- 仅包含,
. 的行