2017-02-20 66 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小寫字母。
  • ) close positive lookbehind

但是,我正在努力與第二步。 如何將第一個空格替換爲逗號後的最後一個空格\s.*,\s只能在括號內?我讀了很多標題爲「正則表達式只在括號內」的帖子,但我遇到的解決方案似乎並不適用於我的案例。

+1

嘗試'(?:\(\ W +)(:\ S +(\ W +))^)] * \ S(\ d + \))' - >'$ 1 $ 2 $ 3 '。 –

+0

@Wiktor完美!你想把你的評論變成答案嗎? – Flo

+0

是的,請稍等 –

回答

1

您可以使用

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

$1$2$3取代。

圖案的詳細資料

  • (\(\w+) - 1組:(然後1+字字符
  • (?:\s+(\w+))? - 匹配1+空格然後可選的非捕獲組捕獲成組2一個或多個單詞字符
  • [^)]* - 零個或多個不同於字符的字符)
  • \s - 空格
  • (\d+\)) - 組3:1+數字和)

enter image description here

相關問題