Notepad ++查找和替换文本之前和之后

时间:2014-03-11 10:36:17

标签: regex replace ms-word notepad++ mediawiki

我有大约520行,看起来有点像这样:

  

** [[失忆]。父母:[[Slowpoke]] [[Slowbro]],[[Snorlax]]

     

** [[魅力]。家长:[[Cottonee]]

     

** [[诅咒]。父母:[[Slowpoke]],[[Slowbro]],[[Slowking]],[[Turtwig]],[[Grotle]],[[Torterra]],[[Ferroseed]],[[Ferrothorn]] < / p>      

** [[忍]。父母:[[Shieldon]],[[Bastiodon]]

我希望以某种方式使用F&amp; R来改变之后[[word]] 的每个实例“父母:”(例如不是Amnesia,Charm等)到{{mpic | word} },并删除所有逗号,以便一行看起来像这样:

  

** [[失忆]。父母:{{mpic | Slowpoke}} {{mpic | Slowbro}} {{mpic | Snorlax}}

我已经搜索过并搜索过,但实际上不知道这是否只有一两次动作是可能的(我不介意我是否需要做一些事情--10次优于520次)。我只有Notepad ++版本5.9(并且无法更新)但我也有Word,所以如果可以,请帮助!

2 个答案:

答案 0 :(得分:1)

Aww蛋移动!试试这个正则表达式:

(?:.*Parents?:|\G)[\s,]*\K\[\[([^\]]+)\]\],?

替换为:

{{mpic|$1}}

regex101 demo

应该这样做:)

(?:            
  .*Parents?:  # begins with ".*Parents?:"
|              # or
  \G           # at the end of previous match
)
[\s,]*         # match spaces and commas
\K             # restart the match
\[\[           # match twin open square brackets
([^\]]+)       # capture what's inside the square brackets
\]\]           # match twin close square brackets
,?             # match any comma that comes after it

我认为\G是在v6x版本中实现的。试试这个解决方法:

\[\[([^\]]+)\]\](?![^:\n]*:),?

并替换为与以前相同的东西。虽然我觉得这样做很简单,但这个更简单一些。它匹配[[ ... ]],只要它在同一行的前面某处没有:

答案 1 :(得分:0)

在Notepad ++中执行以下步骤:

第1步:全部找到'[['&amp;将所有替换为'{{mpic |'

第2步:全部找到']]'&amp;全部替换为'}}'

第3步:全部找到','&amp;全部替换为''

第4步:全部找到'{{mpic |' &安培;全部替换为'[['

(注意 - 对于第4步,请在查找和替换时将**放在两个字符串前面。在回答这个问题时,如果我将**放在前面,它会变为粗体。)

第5步:全部查找'}}。' &安培;全部替换为']]'

你的问题将得到解决。