0

我有一组 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

关于从哪里开始的任何建议,或者一个适当的正则表达式来拉这个?

4

1 回答 1

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

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

于 2012-08-17T22:40:34.810 回答