在某些逗号位置之前删除所有内容的正则表达式

时间:2017-10-23 06:11:43

标签: regex notepad++

我试图删除并替换数组中第13个逗号之前的所有内容,如下所示:

{1,1,0,0,0,4,0,0,0,0,20,4099,4241,706,706,714,714,817,824,824,824,2,2,2,2,1,1,1,1},

到哪里:

{706,706,714,714,817,824,824,824,2,2,2,2,1,1,1,1},

参考:我在Notepad ++中使用正则表达式。

我发现这个regex字符串匹配某个逗号后的所有内容到该行的结尾:

,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*$

但是如何从一开始就把它转过来?

感谢您的时间和帮助,谢谢。

3 个答案:

答案 0 :(得分:2)

$匹配主题字符串的结尾,^匹配开头。所以,如果你想匹配并包括第13个逗号:

^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*, 

替换为" {"。

答案 1 :(得分:2)

您可以使用

{(?:[^,}]*,){13}

仅用{替换。请参阅regex demo。即使您有{...}个子字符串跨越行并且其间的项目少于13个,此版本也能正常工作。

<强>详情

  • { - {
  • (?:[^,}]*,){13} - 连续13次出现
    • [^,}]* - 除,}以外的0 +字符(}对于避免从一个{...}子字符串溢出到另一个字符串非常重要)
    • , - 逗号

您也可以使用

{\K(?:[^,}]*,){13}

用空字符串替换。见another regex demo。您无需替换为{,因为\K会忽略匹配中的第一个{,因此会将其保留在最终文本中。

enter image description here

答案 2 :(得分:1)

尝试以下查找和替换:

<强>查找

\{(?:[^,]*,){13}(.*)

<强>替换

{$1

上述模式可能会稍微调整,具体取决于您对这个括号内字符串可能出现的位置,您想要覆盖/避免的边缘情况等等。

Demo