仅在括号内替换逗号后的第一个空格直到最后一个空格

replace first whitespace until last whitespace after comma only within parentheses

在 Notepad++ 中,我想用引用键替换所有 references/citations。

例如,以下内容:

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)

解释:

但是,我正在为第 2 步而苦苦挣扎。 如何替换逗号后的第一个白色space到最后一个白色space \s.*,\s 只能在括号内?我阅读了许多标题为 "regex only in brackets" 的帖子,但我遇到的解决方案似乎并不适用于我的案例。

您可以使用

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

并替换为 </code>。</p> <p><strong>图案详情</strong>:</p> <ul> <li><code>(\(\w+) - 第 1 组:一个 ( 然后 1+ 个单词字符

  • (?:\s+(\w+))? - 一个可选的 non-capturing 组匹配 1+ 个空格,然后 捕获 到第 2 组一个或多个单词字符
  • [^)]* - )
  • 以外的零个或多个字符
  • \s - 空格
  • (\d+\)) - 第 3 组:1+ 位和 ).