正则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为第一个捕获组,与.*
匹配的所有内容都将被删除。