记事本++正则表达式。查找并替换为通配符,但不允许有任何空格?

Notepad ++ regex. Finding and replacing with wildcard, but without allowing any spaces?

我在 txt 里有这样的东西

[[asdfg]] [[abcd|qwerty]]

连续,但我希望它看起来像那样

 [[asdfg]] [[qwerty]]

尝试搜索时使用通配符 ( [[.*\| ),会导致它找到整行直到“|”不允许它之间有一个 space 应该可以,但我不知道该怎么做。

编辑 1

它来自维基百科转储,所以第一部分是单词的基本形式,第二部分是它如何融入句子。像 [[I]] [[be|was]] [[at]] [[the]] [[doctor]] 我想把它改成正常的句子

[[I]] [[was]] [[at]] [[the]] [[doctor]]

编辑 2

我找到了一些解决方案。我只是把每个词都放在一个新行中,做了第一个正则表达式,然后删除了换行符。不过那确实有点弄乱了我的间距...

试试这个正则表达式:

\[\[\w+\|(\w+)\]\]

替换为:

[[]]

在 Notepad++ 中单击 Replace All 之前,请务必选择底部的 Regular expression

你可以像这样一次运行全部搞定

\[{2}(?:(?!\]{2}).)+?\|([^\]]+)

这需要替换为

[[

参见 a demo on regex101.com


分解为:

\[{2}             # match [[
(?:(?!\]{2}).)+?  # do not overrun ]]
\|                # |
([^\]]+)          # capture anything not ] into group 1

之后,您只需替换左括号和

组的内容