【发布时间】:2010-02-01 21:28:07
【问题描述】:
我正在尝试做的事情:删除围绕特定未转义字符的最里面的未转义方括号(\ 是转义)
输入:[\[x\]]\]\[[\[y\]]
在 y 周围查找括号时的输出:[\[x\]]\]\[\[y\]
查找 x 周围的括号时的输出:\[x\]\]\[[\[y\]]
简而言之,只删除特定字符周围未转义的括号集。
我试过这个(对于 y):Regex.Replace(input, @"(?<!\\)\[(.*?(?<!\\)y.*?)(?<!\\)\]",@"$1",但这似乎与第一个未转义的 [(在 x 之前)与最后一个 ] 匹配。我想我可以用否定字符类替换. 通配符以排除[ 和],但我真正需要否定的是这些的未转义 版本,当我尝试在否定字符类中加入像(?<!\\) 这样的否定后视,我似乎根本不匹配。
提前感谢您的时间和精力。
编辑:
为了澄清,未转义方括号的内容可以是任何内容(另一个未转义方括号除外),只要它们包含感兴趣的未转义字符 (y)。括号内的所有内容都应该保留。
【问题讨论】:
标签: .net regex lookaround