RegEx - соответствует цифрам, но исключает цифры с определенными номерами в начале и соответствует всем символам, но исключает конкретное слово

Мне придется выполнить работу со счетами-фактурами и идентификаторами клиентов. Проблема в том, что порядок перепутан, поэтому невозможна простая рабочая таблица Excel, кроме Regex.

Я пробовал разные вещи (например, Lookahead и Lookbehind), но безуспешно. Я новичок в RegEx, поэтому мне сложно найти работающее решение. Сейчас я нахожусь в той ситуации, когда мне нужно попросить о помощи.

Моя цель состоит в том, чтобы…

  1. Сопоставьте все цифры идентификатора клиента и замените их пустым пространством, но не совпадайте с номерами счетов-фактур 110xxxx.
  2. Сопоставьте [A-Z], но исключите слово Invoice.

К данным предъявляются следующие требования:

  • Номер счета всегда начинается с 110xxxx (8 цифр).
  • Идентификатор клиента (т. е. CID) никогда не начинается с цифры 110xxxx.
  • Иногда CID имеет 7 цифр, а иногда 8 цифр.

Похоже на этот пример

Invoice 1100348 Phil McDoe CID 2689578
CID 1234567, Invoice 1109781, -82, -83 John Miller
Invoice 1109785, CID 8912345, Franklin Barnes 
Invoice 1103249 James Brandlin CID 1165278
Invoice 1103678 Josh Grace CID 7513648

person Hendrik    schedule 20.04.2014    source источник
comment
Всем, кто проголосовал против, знайте, что это новый пользователь, и объяснение того, почему вы проголосовали против, поможет им в будущем писать более качественные вопросы. Для Хендрика это разовая работа (например, миграция с одной системы на другую) или ее придется выполнять много раз (например, каждый день/неделю)? И нужно ли это делать за один проход или вы будете рады принять многошаговый ответ?   -  person ClickRick    schedule 20.04.2014
comment
Я проголосовал за ваш вопрос, потому что он законен и ясен. Я постараюсь помочь вам.   -  person Pedro Lobito    schedule 20.04.2014
comment
@Tuga: для ясности я не голосовал против (и не знаю, кто это сделал). Я просто попросил уточнить объем вопроса. Знание ожидаемых результатов для данного диапазона входных данных, как всегда, также поможет.   -  person ClickRick    schedule 21.04.2014


Ответы (1)


1 — Чтобы удалить CID:

1 - Откройте нужный архив на NotePad++
2 - Нажмите CTRL + H
3 - Выберите вкладку Replace
4 - В поле find введите CID (\d+)
5 - В поле replace введите CID

ДО:

Invoice 1100348 Phil McDoe CID 2689578
CID 1234567, Invoice 1109781, -82, -83 John Miller
Invoice 1109785, CID 8912345, Franklin Barnes
Invoice 1103249 James Brandlin CID 1165278
Invoice 1103678 Josh Grace CID 7513648

ПОСЛЕ:

Invoice 1100348 Phil McDoe CID 
CID , Invoice 1109781, -82, -83 John Miller
Invoice 1109785, CID , Franklin Barnes
Invoice 1103249 James Brandlin CID 
Invoice 1103678 Josh Grace CID 

2 – Чтобы удалить слово СЧЕТ:

1 – Нажмите CTRL + H
2 – Выберите вкладку Replace
3 – В поле find введите INVOICE (110\d+)
4 – В поле replace введите \1

ДО:

Invoice 1100348 Phil McDoe CID 
CID , Invoice 1109781, -82, -83 John Miller
Invoice 1109785, CID , Franklin Barnes
Invoice 1103249 James Brandlin CID 
Invoice 1103678 Josh Grace CID 

ПОСЛЕ:

1100348 Phil McDoe CID 
CID , 1109781, -82, -83 John Miller
1109785, CID , Franklin Barnes
1103249 James Brandlin CID 
1103678 Josh Grace CID 

Дайте мне знать, если это то, что вы хотели.

person Pedro Lobito    schedule 20.04.2014
comment
Спасибо. Ваш хорош, но вы создали упрощенный пример, потому что его достаточно сложно объяснить. Моя ситуация сложнее. я попробую объяснить - person Hendrik; 21.04.2014