正则expression式来select第三次出现之后的所有内容

我有一组excel单元格,我需要使用更复杂的RegEx删除所有包括“|” – (空格,pipe道,空格)的第三次出现的内容 – 某些单元格的出现次数可能更less或甚至为零,而其他人可能有10-20 +。 总共有约40,000个单元,全部在一列中

Canon USA BJC 3000 | BJC 3010 | BJC 6000 | C755 | F30 | F50 | F60 | F80 | I550 | I850 | MP700 | MP730 | S400 | S450 | S500 | S520 | S530 | S600 | S630 | S750 Black Ink Cartridge 420 yield - 4479A003 

应该成为

 Canon USA BJC 3000 | BJC 3010 | BJC 6000 

任何build议从哪里开始,或正确的正则expression式来拉?

不完全确定Excel中的正则expression式是如何工作的,但像下面这样的东西应该工作:

 ((?:[^\|]*\|){2}[^\|]*).* 

将其replace为第一个捕获组的内容(通常是\1$1 )。

例如: http : //gskinner.com/RegExr/?31sbq

说明:

 ( # start capture group 1 (?: # start non-capturing group, repeated exactly twice [^\|]*\| # match any number of non '|' followed by '|' ){2} # end non-capturing group [^\|]* # match any number of non '|' ) # end capturing group .* # match to end of string 

通过将其replace为第一个捕获组,与.*匹配的所有内容都将被删除。