Пожалуйста, помогите мне в следующем порядке

Текущий текст

ALPHA;111,'BI_209'
ALPHA;222,'BI_213'
ALPHA;AAA,'BI_209'
ALPHA;FFF,'BI_209'
ALPHA;123,'BI_220'

Предполагаемый статус после первого раунда поиска и замены в Notepad ++

BI_209;111,'BI_209'
ALPHA;222,'BI_213'
BI_209;AAA,'BI_209'
BI_209;FFF,'BI_209'
ALPHA;123,'BI_220'

Как видно выше, в первом раунде я намереваюсь найти определенный шаблон * ALPHA* BI_209* и заменить его на *BI_209*BI_209* .
Пожалуйста, помогите мне с правильным регулярным выражением в НАЙТИ, а также ЗАМЕНИТЕ поля, чтобы достичь того, что я планирую получить. Обратите внимание на различные тексты, такие как '; 111,' ..... '; 222,' .... '; AAA' между ними не должно быть изменено или затронуто.

Если я получу шаблон для поиска и замены, это поможет во втором (и последующих) раундах нескольких поисков и замен - для достижения этого результата

BI_209;111,'BI_209'
BI_213;222,'BI_213'
BI_209;AAA,'BI_209'
BI_209;FFF,'BI_209'
BI_220;123,'BI_220'

2 ответа2

1
  1. Найти что: ALPHA(.*'BI_209')

    Заменить на: BI_209\1

    Объяснение: то, что соответствует регулярному выражению в скобках, сохраняется и может быть вызвано с помощью \1 . Скобки могут определять несколько групп захвата, например (ALPHA)(.*)('BI_209') , который можно использовать с обратными ссылками \1 , \2 , \3 ...

  2. Собрав все это вместе, вы можете сделать все замены за один проход:

    Найти что: ALPHA(.*)'(BI_209|BI_213|BI_220)'

    Заменить на: \2\1'\2'

    Здесь, | Символ указывает альтернативные строки для поиска.

  3. Вот более общее решение на случай, если позже вы добавите другие коды:

    Найти что: ALPHA(.*)'(BI_\d{3})'

    Заменить на: \2\1'\2'

    Здесь \d соответствует любой цифре и является синонимом [0-9] ; {3} - коэффициент повторения; \d{3} соответствует любой последовательности, состоящей ровно из трех цифр.

Примечание: поскольку паретезы являются специальными символами, если вы хотите указать литерал ( или ) вам нужно экранировать его с обратной косой чертой, например: \( и \) .

1

Чтобы найти текст ALPHA...'BI_xxx' и заменить на 'BI_xxx'...'BI_xxx':

  • открыть диалог поиска и замены
  • проверьте "регулярное выражение"
  • найти что: ALPHA(.*'(BI_\d+)')
  • заменить на: \2\1
    проверить это здесь

Это будет соответствовать любому 'BI_xxx' где xxx - это число, по крайней мере, одной цифры.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .