Question

I'm trying to get notepad++ to regex find all instances of "abc" and "def" in the following sentence:

The abc went to the def.

None of the following syntaxes seem to work:

  • abc|def
  • [abc|def]
  • (abc)|(def)
  • (abc|def)

NOTE: "[a|d]" matches any instance of "a" or "d" when I tested

Was it helpful?

Solution

Upgrade to Notepad++ v6. From the changelog: "PCRE (Perl Compatible Regular Expressions) is supported." I've verified that | works in regex search when using Notepad++ v6.

OTHER TIPS

It's nothing special about "longer than one character", Notepad++ doesn't support the | character in regex. Not even "a|d" works. See the regex help page. Version 6.1.1 of Notepad++ now supports |.

I'd suggest using an editor with a proper regex implementation like gvim or UltraEdit.

Inside a character set declaration ([…]) only the characters \, ] and - are special characters with the special functions of escaping the next character, closing the character set declaration and marking a character range (only if not written at the begin or end), respectively. Any other character is interpretet as a plain character.

So is your | in [a|d] which means that [a|d] describes any of the characters a, | or d and not just a or d like a|d does.

I was having the same problem, which is how I landed here. Since it's a notepad++ deficiency, we can make do by using Powershell. In your case, simply run a Select-String:

`ss abc,def filename`

If on Unix then you have other tools like grep of course.

I recognize you wanted a solution for notepad++, and so do I, but sometimes you have to make do.

The | should work now.
Thanks to the Regex improvement in Notepad++

abc|def

(abc)|(def)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top