2014-01-23 2 views
1

В настоящее время я использую TextWrangler (mac) с помощью grep find/replace, но так же счастлив использовать любые другие инструменты редактора или командной строки.Найти несколько подшаблонов и заменить их с помощью обратной копии на несколько строк с помощью textwrangler grep

У меня есть текстовый файл со структурой, как это (да, есть пробел в начале каждой строки):

Reference 1 - This is a sentence with a period. And this exclaims! So does this one! 
Reference 2 - This questions? And this, this one responds. But this YELLS! 

И мне нужно, чтобы сохранить ссылку, но разбить каждое предложение в его собственная линия, как это:

Reference 1 - This is a sentence with a period. 
Reference 1 - And this exclaims! 
Reference 1 - So does this one! 
Reference 2 - This questions? 
Reference 2 - And this, this one responds. 
Reference 2 - But this YELLS! 

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

^([^-]+ -\s+)(?:([^.!?]+?[.!?]))(([^.!?]+?[.!?])+?)$  

ЗАМЕНИТЬ как это:

\1\2 
\1\3 

И результаты выглядят следующим образом:

Reference 1 - This is a sentence. 
Reference 1 - And this exclaims! So does this one! 

Reference 2 - This questions? 
Reference 2 - And this, this one responds. But this YELLS! 

Если я бегу несколько раз, это не всегда отдельный два других предложения в новые строки. Но если добавить еще одну строку в замене:

\1\4 

Тогда я получаю это в результате:

Reference 1 - This is a sentence. 
Reference 1 - And this exclaims! So does this one! 
Reference 1 - So does this one! 

Reference 2 - This questions? 
Reference 2 - And this, this one responds. But this YELLS! 
Reference 2 - But this YELLS! 

Моя надежда состоит в том, что это довольно просто, и я просто отсутствует переключатель/модификатор /и т.д.

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

Любые идеи?

ответ

2

насчет:

Search: 
    ^([^-]+-\s+)(.*[.!?]) *(.*[.!?]) 

Replace: 
    \1\2 
    \1\3 

мне пришлось запустить его через несколько раз, но он, казалось, чтобы соответствовать вашей целевой схеме.

+0

После попытки я получил точно то же самое. GREP TextWrangler поддерживает не-жадное сопоставление, поэтому вы можете использовать '(. +? [.!?])', Но, похоже, он достиг того же результата. – usr2564301

+0

Идеальное решение! Благодаря!!! Извините, что не вернусь раньше. –

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

  • Нет связанных вопросов^_^