相同的字符转义序列



我想匹配由大括号括起来的数字,但大括号本身是转义序列,当正好有奇数'em时,我希望匹配从最后一个大括号开始。

{0}    OK
{{0}   NOT OK
{{{0}  OK
{{{{0} NOT OK

我有这样的前瞻性断言:

(?<!{{)

但这与重复{{{0}不匹配,我实际上不确定是否可以在不涉及组和quatifier的情况下做到这一点。(如果断言不是比赛的一部分,我会喜欢的)

匹配必须能够出现在字符串中的任何位置。

这是迄今为止我得到的最好的

(?<=^|[^{]|{{){(?=w)

除了这一部分之外,它在所有地方都成功了。{{{{0}在大括号对上放一个量词似乎没有任何效果。根据文档的说法,零宽度正lookbacking断言的子表达式不应该有限制,但它没有达到预期的效果。

以您的尝试为基础,尝试以下操作:

(?<!{){(?:{{)*(?=w)

解释:

  • (?<!{)确保前面没有{
  • {匹配一个{
  • (?:{{)*匹配零次或多次出现的{{(因此总有奇数个{
  • (?=w)确保后面有一些单词字符

最新更新