2013-07-25 2 views
1

Я следующий формат в файле:Regex строка замены в Notepad ++

011890111,MFCD00005493 

Мне нужно, чтобы включить все строки в:

update [dbname].iwfs_part_search_tb set mdl_number='MFCD00005493' where condensed_part_number = '011890111'; 

я не знаю так, Я могу использовать регулярное выражение в Notepad ++ для принятия определенных совпадений, а затем обернуть эти соответствия и использовать их в том, что я хочу заменить, вместо того, чтобы заменить весь матч. Может ли кто-нибудь помочь мне здесь?

+0

Это должно быть возможно с некоторым регулярным выражением, но у меня всегда были проблемы со сложным регулярным выражениям (следует искать какой-то хороший учебник) .. Однако, если вы просто ищете какое-то быстрое решение, вы можете импортировать файл в какую-либо электронную таблицу, добавить столбцы с отсутствующей информацией и затем экспортировать в текстовый файл. Сделали это один или два раза быстро (да, грязно, но быстро) обходное решение ... – Martin

+0

Мартин, я на самом деле все так делал ... были 38K строк, которые нуждались в модификации. Гораздо проще было выполнить столбцы по столбцам, чем запустить на нем регулярное выражение. Просто не говорите smemy ....;) – ResourceReaper

+0

Да, это своего рода «хромое» решение, поэтому я не ответил на это как ответ, но в конце, если у вас есть какой-то результат для достижения работа, вы не можете просто подождать, пока не получите наилучшее возможное решение ... :) – Martin

ответ

10

Попробуйте это:

Найти что: ([0-9]+),([A-Z]+[0-9]+)
Заменить: update [dbname].iwfs_part_search_tb set mdl_number='$2' where condensed_part_number = '$1';

Тогда, очевидно, убедитесь, что регулярное выражение проверяется.

Что происходит?

([0-9]+) - paranthesis означает «группа захвата», [0-9]+ означает «один или несколько» любого числа.
, - запятая, не в группе захвата или что-нибудь еще ... только запятая
([A-Z]+[0-9]+) - другая группа захвата, содержит одну или несколько заглавных букв, за которыми следует одно или несколько номеров.

«Группы захвата» сверху могут быть использованы в поле «Заменить с» в Notepad ++ с помощью $, за которым следует индекс этой группы. Первая группа ($1) будет для группы чисел, существовавших до запятой, тогда как вторая группа ($2) будет для группы букв и цифр, следующих за запятой.

Испытано:

011890111,MFCD00005493 
011891232,MDAN00032492 
011853233,MFCD00005444 
011892121,MFCD
011812341,MAAS00005493 

становится:

update [dbname].iwfs_part_search_tb set mdl_number='MFCD00005493' where condensed_part_number = '011890111'; 
update [dbname].iwfs_part_search_tb set mdl_number='MDAN00032492' where condensed_part_number = '011891232'; 
update [dbname].iwfs_part_search_tb set mdl_number='MFCD00005444' where condensed_part_number = '011853233'; 
update [dbname].iwfs_part_search_tb set mdl_number='MFCD' where condensed_part_number = '011892121'; 
update [dbname].iwfs_part_search_tb set mdl_number='MAAS00005493' where condensed_part_number = '011812341'; 
+0

Я пробежал это через N ++, и это прекрасно! Спасибо smemy :) – ResourceReaper

+0

Итак, вопрос о Regex, [0-9] соответствует всем символам 0-9, но что означает «+» после этого? – ResourceReaper

+1

'+' означает «один или несколько» из того, что следует за ним ... поэтому 'a [0-9] + b' будет соответствовать« a0b », а также« a0219412084219b »и т. Д.' [0-9] 'будет совпадают только с одним номером, 'a [0-9] * b' будет соответствовать« ноль или больше », поэтому« ab »или« a93248b ». – smerny

Смежные вопросы