The pipe character has its own meaning in regex, to match what is on either side of the pipe. The reason it appears to work on regex101 but not in KM is only because regex101 shows you all possible matches at once, whereas KM's Search With Regex action only returns the first of these "either" matches. If you want to the regex to parse the pipe as a standard character, each pipe needs to be escaped with a backslash so that it no longer has its own regex-specific meaning:
\s*([^|]+)\|([^|]+)\|([^|]+)