Регулярное выражение в Notepad++

Может ли кто-нибудь предоставить регулярное выражение для блокнота ++ для приведенного ниже поиска и замены (преобразования)

ADD  ( PRIMARY KEY (xxx) ) ;

to

ADD  PRIMARY KEY (xxx) ;

в основном, удалено () вокруг выражения первичного ключа. значение xxx различно в операторах.

Если не блокнот ++, я также могу попробовать регулярное выражение для vim или любой сценарий оболочки.

большое спасибо. Бабу.


person bsr    schedule 13.04.2010    source источник


Ответы (4)


Ищи:

ADD  \( PRIMARY KEY \((.+)\) \) ;

Заменить:

ADD  PRIMARY KEY (\1) ;
person compie    schedule 13.04.2010
comment
Большое вам спасибо .. это отлично сработало с небольшим изменением .. шаблон для поиска был ADD \( PRIMARY KEY \((.+)\) \) ; Я уверен, что вы знаете лучше, но я не видел использования 'd' в их руководстве (notepad-plus.sourceforge.net/uk/regExpList.php). еще раз спасибо за вашу помощь. - person bsr; 14.04.2010

В perl предполагается, что вы читаете строку в $line

$line =~ s/([^(]+)\((.*)\)/$1$2/

сделал бы работу. Это также избавляет вас от вырезания вставки ADD PRIMARY KEY... (с правильным количеством пробелов. Здесь регулярное выражение делает следующее:

а) Сопоставить все до первого ( и записать его в 1 доллар

б) Соответствие (

c) Сопоставление всех символов до, но не включая финал ) и захват его в $ 2.

d) Соответствие трейлингу )

e) Замените исходную строку на $1$2.

person Jasmeet    schedule 14.04.2010

Попробуйте это, поскольку x — последнее слово в xxx, вы также можете изменить его на точку

Что искать: \s\s\K\(|x\) \K\)
Заменить на: nothing

Если не сработало, поделитесь полным примером строки
и желаемым результатом ......

person Haji Rahmatullah    schedule 25.02.2021

Вам не нужно регулярное выражение. Найдите '( ' и замените пробелом. Затем найдите ') ' и ничего не замените.

Это '([space]' и ')[space]'.

person Michaelkay    schedule 13.04.2010
comment
Это '([пробел]' и ')[пробел]' - person Michaelkay; 13.04.2010
comment
спасибо за ваш быстрый ответ ... извините, я не упомянул ... есть другой текст, который содержит (, ) и т. д., которые я не хочу беспокоить .. - person bsr; 13.04.2010
comment
@bsreekanth, тогда регулярное выражение, вероятно, вам не поможет. Regex не понимает вложенности. Нельзя сказать, что открывающая и закрывающая скобки принадлежат друг другу. - person tloflin; 13.04.2010