2017-02-20 16 views
1

В Notepad ++ я хотел бы заменить все ссылки/цитаты ссылкой.заменить первые пробелы до последнего пробела после запятой только в круглых скобках

Е.Г., следующее:

Bla bla bla bla (van Author et al., 2015). 
Bla bla bla (Authorone, Authortwo, & Authorthree, 2016). 
Bla bla (Authorone & Authortwo, 2017). 

должны стать:

Bla bla bla bla (vanAuthor2015). 
Bla bla bla (Authorone2016). 
Bla bla (Authorone2017). 

Обратите внимание, что также может быть несколько ссылок в одной строке, но нет вложенных скобок.

На первом этапе я заменил (?<=\([a-z][a-z][a-z])\s ничем, чтобы превратить первую цитату из (van Author et al., 2015) в (vanAuthor et al., 2015). Это также будет работать для (von Author et al., 2015).

Пояснение:

  • \s Удалить сингл белого пространства
  • (?<=, который следует
  • \([a-z][a-z][a-z]) отверстие скобки и 3 букв нижнего регистра.
  • ) близко positive lookbehind.

Однако я борюсь со вторым шагом. Как заменить первый пробел до последнего пробела после запятой \s.*,\sтолько в круглых скобках? Я прочитал много сообщений под названием «регулярное выражение только в скобках», но решения, с которыми я столкнулся, похоже, не применимы к моему делу.

+1

Try '(? \ (\ W +) (: \ s + (\ W +)) [^?)] * \ S (\ d + \)) '->' $ 1 $ 2 $ 3 '. –

+0

@Wiktor безупречный! Вы хотите включить свой комментарий в ответ? – Flo

+0

Да, всего через секунду –

ответ

1

Вы можете использовать

(\(\w+)(?:\s+(\w+))?[^)]*\s(\d+\)) 

и заменить $1$2$3. Подробнее

Pattern:

  • (\(\w+) - Группа 1: а (, а затем 1+ слово символов
  • (?:\s+(\w+))? - опциональная, не захватывая группу соответствия 1+ пробельных и затем захвата в группу 2 один или несколько символов слова
  • [^)]* - ноль или более символов, кроме )
  • \s - пробел
  • (\d+\)) - Группа 3: 1 + цифры и ).

enter image description here

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

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