相同的字符转义序列

时间:2011-05-29 12:38:46

标签: c# regex

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

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

我是这样的先行/后视断言:

(?<!\{\{)

但这与重复{{{0}不匹配,我实际上不确定这可以在不涉及群体和quatifiers的情况下完成。 (如果断言不是比赛的一部分,我会喜欢它)

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

这是我到目前为止最好的

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

除了这一部分{{{{0}之外,它在所有地方都取得了成功,因此在括号上放置量词似乎没有任何效果。根据{{​​3}},对零宽度正向后观断言的子表达式不应有限制,但它没有达到预期的效果。

1 个答案:

答案 0 :(得分:1)

以您的尝试为基础,试试这个:

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

解释:

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