3

我正在尝试编写一个正则表达式,以仅匹配未跟随一个或多个进一步管道的“管道”字符 (|) 的实例。所以一个管道后面跟着一个管道以外的任何东西。

我有这个,但它似乎没有工作:

/|(?!/|)
4

3 回答 3

5

你在逃避你的pipe错误。你需要使用backslash,而不是slash。除此之外,您还需要使用negative look-behind, 以便last管道不匹配,它可能前面没有管道,但后面没有: -

(?<!\|)\|(?!\|)

一般来说,如果我想匹配正则表达式元字符类,我更喜欢使用字符类而不是转义:-

(?<![|])[|](?![|])

但是,这是我的口味。

于 2013-02-07T16:10:27.747 回答
0

好的,经过多次迭代,我找到了答案。这将仅匹配一个未进行且未跟随管道的单个管道字符。

(?=(\|(?!\|)))((?<!\|)\|)
于 2013-02-07T16:41:50.437 回答
0

匹配一个(行首或非管道)管道(行尾或非管道)。

(^|[^|])[|]([^|]|$)
于 2013-02-08T23:54:45.590 回答