我有一组excel单元格,我需要使用更复杂的RegEx来删除所有内容,包括和之后的第三次出现" | " - (空间,管道,空间) - 某些单元格可能少或甚至出现0次,而其他单元格可能有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
关于从哪里开始的任何建议,或正确的正则表达式来拉这个?
答案 0 :(得分:2)
不完全确定Excel中的正则表达式是如何工作的,但以下内容应该有效:
((?:[^\|]*\|){2}[^\|]*).*
将其替换为第一个捕获组的内容(通常为\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
通过将其替换为第一个捕获组,.*
匹配的所有内容都将被删除。