【发布时间】:2014-09-11 13:24:36
【问题描述】:
我有一个如下数字列表:
[123,45,6,78,9]
[45]
[45,123,456]
[1234,45]
[]
[123,4,67,8,9]
假设我想删除号码 45 以尽可能少的回溯,我写了以下正则表达式:
(\[)((?=\])|(45(?=\])|45,|(?>([^,]|,(?!45(?:,|\])))))([^\]\])
此正则表达式适用于除最后一种情况以外的所有情况,我们将不胜感激。
【问题讨论】:
-
最后一个case是什么意思?
-
预期的输出是什么?
-
那个正则表达式无效 - 有一些未闭合的括号和方括号 - 你能检查一下吗?
-
您是否必须考虑方括号外可能存在
45s 以及正则表达式不能匹配这些的可能性? -
如果您不关心括号,那么最简单的方法是:
Regex.Replace(str, "\\b(45,|45|,45)\\b", "");
标签: c# .net regex regex-negation regex-lookarounds