Регулярное выражение для выбора всего после и включая 3-е вхождение

У меня есть набор ячеек Excel, в которых мне нужно использовать более сложное регулярное выражение для удаления всего, включая и после третьего вхождения "|" - (пробел, вертикальная черта, пробел) - некоторые ячейки могут иметь меньше или даже 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

любой совет о том, с чего начать, или правильное регулярное выражение для этого?


person user1484009    schedule 17.08.2012    source источник


Ответы (1)


Не совсем уверен, как работает регулярное выражение в 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

Заменив это первой группой захвата, все, что соответствует .*, будет удалено.

person Andrew Clark    schedule 17.08.2012