我正在尝试做的事情:删除围绕特定未转义字符的最里面的未转义方括号(\
是转义)
输入:[\[x\]]\]\[[\[y\]]
在 y 周围查找括号[\[x\]]\]\[\[y\]
时输出:在 x 周围查找括号时输出:\[x\]\]\[[\[y\]]
简而言之,只删除特定字符周围未转义的括号集。
我试过这个 (for y): Regex.Replace(input, @"(?<!\\)\[(.*?(?<!\\)y.*?)(?<!\\)\]",@"$1"
,但这似乎与第一个未转义[
的(在 x 之前)与最后一个匹配]
。我想我可以用.
否定字符类替换通配符来排除[
and ]
,但是我真正需要否定的是这些的未转义版本,当我尝试(?<!\\)
在否定字符类中加入否定的lookbehind 时,我似乎什么都不匹配一点也不。
提前感谢您的时间和精力。
编辑:
澄清一下,未转义方括号的内容可以是任何内容(另一个未转义方括号除外),只要它们包含感兴趣的未转义字符 ( y
)。括号中的所有内容应保留。