regex, extract string NOT between two brackets

前端 未结 2 688
暖寄归人
暖寄归人 2020-11-29 10:04

OK regex question , how to extract a character NOT between two characters, in this case brackets.

I have a string such as: word1 | {word2 | word3 } | word 4

相关标签:
2条回答
  • 2020-11-29 10:34

    Depends on the language/implementation you're using, but...

    \|(?![^{]*})
    

    This matches a pipe that is not followed by a } except in the case that a { comes first.


    The (?! ... ) is known as a negative lookahead assertion. This is easier to understand if we start with a positive lookahead assertion:

    \|(?=[^{]*})
    

    The above only matches a pipe that is followed by a } without encountering a { first. When you negate that by replacing the = with a !, the match is now only successful if there's no way for the positive case to be true (also known as the complement).

    0 讨论(0)
  • 2020-11-29 10:54

    On refiddle.com set to JavaScript, try using this pattern

    /\|(?![^{]*})/g
    

    with this text

    word1 | {word2 | word3 } | word 4 | word 4 | {word2 | word3 }
    

    This should match all of the Pipe symbols that are not inside {}.

    0 讨论(0)
提交回复
热议问题