2017-10-15 196 views
2

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

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

这样的事情,但我希望它看起来像

[[asdfg]] [[qwerty]] 

使用通配符([* \ |)试图搜索时,导致它发现整个线路“|”不允许它之间有空间应该工作,但我不知道如何做到这一点。

编辑1

这是从维基百科转储,所以第一部分是这个词在它的基本形式,第二个是它如何融入句子。像[[I]] [[be|was]] [[at]] [[the]] [[doctor]]东西,我想把它变成一般的句子

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

编辑2

我发现有些解决方案。我只是把每一个单词放在一个新的行中,做了第一个正则表达式,然后删除了换行符。这的确有点乱了我的间距,但...

+0

应该总能找到相同/重复的字符,如'C'| C ','a'| a'? – RomanPerekhrest

+0

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

+0

应该如何取代[[I]] [[是|是]] [[at]] [[]] [[doctor]]? – RomanPerekhrest

回答

1

试试这个正则表达式:

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

替换为:

[[$1]] 

确保你选择Regular expression底部在记事本中单击Replace All之前++ 。

+0

它说它无法找到文本。 – rrter123

+0

它应该找到类似这个'[[c'| c]]'的东西。在点击“全部替换”之前,您是否在底部选择了“正则表达式”? – Ibrahim

+0

虽然我并不清楚代码,但它不是真的c'| c这是两个不同的单词。抱歉。 – rrter123

0

你可以做到这一切在一个像下面这样运行

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

这需要通过

[[$1 

更换见a demo on regex101.com


分布看这个说:

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

之后,你只需要更换打开支架和组的内容$1

相关问题