去除第二个逗号('',)之前的文本,字符串替换模式。

4

如何使用正则表达式删除第二个逗号开始的文本(例如示例中的第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

请尝试使用http://ideone.com/f9pVW2 - Wiktor Stribiżew
谢谢,如何在上面的示例中删除第5行之前的文本? - vkt
请尝试使用http://ideone.com/BaoC8H - Wiktor Stribiżew
非常感谢,它完美地运行了,如果可能的话,您能解释一下 (?sm)^(.*?^,$) 正则表达式模式吗? - vkt
实际上,有一个错误。你需要 "(?sm)\\A(.*?^,$){2}" - Wiktor Stribiżew
1个回答

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演示

模式细节

  • (?sm) - s 使.匹配字符串中的任何字符,包括换行符,m 使^$分别匹配行的开头/结尾
  • \\A - 字符串的开始
  • (.*?^,$){2} - 2次出现:
    • .*? - 最少数量的任意0+个字符
    • ^,$ - 只包含,的行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接