rrter123
rrter123

Reputation: 43

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

I have something like this in txt

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

in a row, but I want it to look like that

 [[asdfg]] [[qwerty]]

using wildcards ( [[.*\| ) when trying to search, results in it finding the whole line up to the "|" Not allowing it to have a space in between should work, but I don't know how to do that.

Edit 1

It's from a wikipedia dump, so the first part is the word in it's basic form and the second is how it fits into the sentence. Something like [[I]] [[be|was]] [[at]] [[the]] [[doctor]] And I want to change it into normal sentences

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

Edit 2

I found somewhat of a solution. I just put every word in a new line, did the first regex and then deleted newlines. That did kinda mess up my spacing though...

Upvotes: 2

Views: 288

Answers (2)

Jan
Jan

Reputation: 43169

You can do it all in one run like so

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

This needs to be replaced by

[[$1

See a demo on regex101.com.


Broken down this says:

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

Afterwards, you'll only need to replace the open brackets and the content of group $1

Upvotes: 0

Ibrahim
Ibrahim

Reputation: 6088

Try this regex:

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

Replace with:

[[$1]]

Make sure you choose Regular expression at the bottom before you click Replace All in Notepad++.

Upvotes: 1

Related Questions