我正在尝试编写一个正则表达式,以仅匹配未跟随一个或多个进一步管道的“管道”字符 (|) 的实例。所以一个管道后面跟着一个管道以外的任何东西。
我有这个,但它似乎没有工作:
/|(?!/|)
我正在尝试编写一个正则表达式,以仅匹配未跟随一个或多个进一步管道的“管道”字符 (|) 的实例。所以一个管道后面跟着一个管道以外的任何东西。
我有这个,但它似乎没有工作:
/|(?!/|)
你在逃避你的pipe
错误。你需要使用backslash
,而不是slash
。除此之外,您还需要使用negative look-behind
, 以便last
管道不匹配,它可能前面没有管道,但后面没有: -
(?<!\|)\|(?!\|)
一般来说,如果我想匹配正则表达式元字符类,我更喜欢使用字符类而不是转义:-
(?<![|])[|](?![|])
但是,这是我的口味。
好的,经过多次迭代,我找到了答案。这将仅匹配一个未进行且未跟随管道的单个管道字符。
(?=(\|(?!\|)))((?<!\|)\|)
匹配一个(行首或非管道)管道(行尾或非管道)。
(^|[^|])[|]([^|]|$)