1

我正在寻找与“>”匹配的正则表达式

a > b
>
b>
...

但不是两个或多个尖括号,即它不应该匹配

a>>b
>>
b>>
...

我肯定会通过前瞻或后视来做到这一点,但由于某种原因,两者都没有

\>(?!\>)

也不

(?<!\>)\>

工作..?

谢谢!

4

3 回答 3

4

Perl 语法:

/(?<!>)>(?!>)/

不使用前瞻或后瞻:

/(?:^|[^>])>(?:[^>]|$)/
于 2013-05-25T08:46:27.950 回答
1

perreal 的第一个正则表达式是正确的。但是,该答案中给出的第二个正则表达式在一种情况下巧妙地失败了。由于它同时捕获前后字符,>因此不会同时找到由单个字符分隔的两个 s。

这是一个正则表达式,它只使用前瞻并且没有这个问题:

(?:^|[^>])(>)(?:$|(?!>))

正则表达式图片

在 Debuggex 上实时编辑

于 2013-05-25T15:09:41.973 回答
0

这里的问题是,当您使用前瞻时,您匹配的是第二个(第二个之后>没有),而当您使用后瞻时,您匹配的是第一个。>>>

你可能会使用这个:

[^>]>[^>]

有一个>,>之前或之后都没有。

但我认为,为了满足您的确切需要,需要同时使用前瞻和后视:

(?<!>)>(?!>)
于 2013-05-25T08:18:41.023 回答