Как заменить все строки на числа, содержащиеся в каждой строке в Notepad ++?


108

Я пытаюсь найти все значения по следующему шаблону:

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

и замените его значением внутри областей видимости.

Я использую следующее регулярное выражение, чтобы найти шаблон:

.*"\d+"

Как мне сделать замену?


2
Что такое запасная часть? Не могли бы вы привести пример?
Toto

^. * value = "([^"] *) ". * $ проверьте это регулярное выражение и измените значение \ 1 там, где это необходимо
Nikhil KS

Ответы:


191

В Notepad ++ для замены нажмите Ctrl+, Hчтобы открыть меню «Заменить».

Затем, если вы отметите кнопку «Регулярное выражение» и хотите, чтобы в вашей замене использовалась часть совпадающего шаблона, вы должны использовать «группы захвата» (подробнее см. В Google ). Например, предположим, что вы хотите сопоставить каждую из следующих строк

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

используя .*"\d+"узор и хотите сохранить только номер. Затем вы можете использовать группу захвата в своем шаблоне соответствия, используя круглые скобки (и ), например,: .*"(\d+)". Итак, теперь в вашей замене вы можете просто написать $1, где $ 1 ссылается на значение 1-й группы захвата и будет возвращать число для каждого успешного совпадения. Например (.*)="(\d+)", если у вас было две группы захвата, $1вернет строку valueи $2номер.

Итак, используя:

Найти: .*"(\d+)"

Заменить: $1

Он вернет вас

4
403
200
201
116
15

Обратите внимание, что существует множество альтернативных и лучших способов сопоставления вышеупомянутого шаблона. Например, шаблон value="([0-9]+)"был бы лучше, поскольку он более конкретный, и вы будете уверены, что он будет соответствовать только этим строкам. Можно даже произвести замену без использования групп захвата, но это немного более сложная тема, поэтому я пока оставлю ее :)


19
На замену $1у меня не вышло. Я использовал \1вместо этого, и это сработало.
Джейсон Уиллер,

12
\1Работает во всех версиях Notepad ++. $1работает только в более новых.
Cullub

Я предполагаю, что это не работает с Hex Editorплагином. В режиме шестнадцатеричного представления Notepad ++ не показывает Regular Expressionопцию поиска / замены. В режиме текстового просмотра я вижу Regular Expressionвариант поиска / замены. Я использую Notepad ++ версии 6.9.2, которая на данный момент является текущей версией.
Кевин Феган,

15

psxls дал отличный ответ, но я думаю, что моя версия Notepad ++ немного отличается, поэтому захват $ (знак доллара) не работал.

У меня Notepad ++ v.5.9.3, и вот как вы можете выполнить свою задачу:

Найдите шаблон: value = \ "([0-9] *) \" И замените на: \ 1 (все, что вы хотите сделать с этой группой захвата)

Ex. Окружить квадратными скобками

[\ 1] -> создаст значение = "[4]"


1
\1Помогли мне сохранить номер, но убрать за ним цитату. У меня было около 7400 строк в документе вроде tablename.columnname = '12345'. Первую цитату было легко удалить, вторую - с помощью вашего \1в текстовом поле замены. Спасибо, +1
Бен Франсен

6

замещать (.*")\d+(")

С участием $1x$2

Где xтвоя «ценность в пределах видимости».



-3

Найти: value="([\d]+|[\d])"

Заменить: \1

Это действительно вернет тебя

4
403
200
201
116
15

js:

a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"';
a = a.replace(/value="([\d]+|[\d])"/g, '$1');
console.log(a);

3
Как это решение JavaScript связано с вопросом, помеченным как Notepad ++?
Джейсон Аллер

Как ошибочные, неработающие ответы 1 и 2 могут иметь отношение к вопросу, помеченному тегом Notepad ++?
user3178007 07

Почему я задал этот вопрос здесь? Потому что я не могу создавать вопросы. Потому что у меня недостаточно очков репутации.
user3178007 07

1
Для того, чтобы задавать вопросы, как вы утверждаете, нет таких требований к репутации - вы не могли быть ограничены. Попробуйте еще раз: stackoverflow.com/questions/ask
BoltClock

Был задан вопрос. stackoverflow.com/questions/24112018/ ... Но слов для поиска ограничено. Ограничение есть!
user3178007
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.