regex - 删除第二个逗号之前的文本 ('' ,") 字符串替换模式

标签 regex string scala str-replace

我们如何删除以第二个逗号开头的行之前的文本(示例中的第 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 使 ^$ 分别匹配行的开始/结束
  • \\A - 字符串
  • 的开始
  • (.*?^,$){2} - 出现 2 次:
  • .*? - 尽可能少的任何 0+ 个字符,直到最左边的
  • ^,$ - 仅包含 , 的行。
  • 关于regex - 删除第二个逗号之前的文本 ('' ,") 字符串替换模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45201688/

    相关文章:

    javascript - 将输入字段中的字符限制为一组字符

    javascript - 如何生成正则表达式字符串来检查第二个单词是否大写

    python - 在联接中轻松替换分隔符

    scala - 为什么在调用 timer.schedule 时主应用程序不退出

    xml - 如何在模式匹配中为某些情况添加 XML 节点?

    scala - 创建括号平衡器的并行处理

    php - php 中的负后视和贪婪量词

    java - 使用 Java 正则表达式进行单词提取和拆分

    c - 按字典顺序返回内存字符对用户输入进行排序?

    java - 电话号码字符串到 int