2016-06-03 11 views
0

Я хочу знать, есть ли какой-либо инструмент, который выполняет поиск по регулярному выражению через огромный текст (xml или tagged или html) и заменяет только те случаи, которые выбраны в показанных (должны иметь «select/deselect»/select all 'при применении замены regex).Regex и заменить только выбранные результаты

Как пример ниже:

Мой контент является:

"Visited xtreme.com, stupid.net, childish.com, happy.net and innocence.edu. There are some cross.network isssues that are to be fixed." 

Сейчас в этом содержании, я хочу, чтобы заменить все «.net» вхождений с «.com» и так простой инструмент, как Блокнот ++ заменит его легко. Но я хочу, чтобы инструмент показывал результаты поиска и предоставлял возможность заменить только первые два вхождения «.net», а не экземпляр в «cross.network»

Это только примерные цели и не предлагают альтернативное регулярное выражение. Мне это не нужно.

+0

Вы можете использовать границу слова '\ .net \ b', чтобы выбрать/заменить только те, у которых нет словных символов в конце, с помощью регулярного выражения. Dunno, если в np ++ есть * первые два *, но вы можете просто нажать «Найти дальше» и нажать «Заменить», если это совпадение должно быть заменено. –

+0

Приведенный выше пример предназначен только для понимания. Мне не нужно альтернативное регулярное выражение. NP ++ хорош с опцией «Найти дальше», но этого недостаточно для получения огромных данных с более чем 1000+ вхождениями. –

+0

вы можете попробовать инструменты, такие как AstroGrep и DocFetcher –

ответ

1

NP ++ или sublime все в порядке, если они могут читать весь текст в памяти. Они поддерживают регулярные выражения для поиска и замены текста.

Если текстовые файлы слишком большие, то есть сбой NP ++, вы можете использовать sed. Это линия инструмент команда, которая может заменить текст следующим образом:

sed -i filename.txt 's/pattern/replacement/g' 

На окнах коробки вам нужно mingw или cygwin, чтобы запустить его.

1

Используйте текстовый редактор, например sublime и применить границу слово к регулярному выражению:

\.net\b 

Найдет .net в stupid.net, но не в cross.network.
См. a demo on regex101.com.