我有一个数字列表,如下所示:
[123,45,6,78,9]
[45]
[45,123,456]
[1234,45]
[]
[123,4,67,8,9]
假设我想删除数字 45
以尽可能少的回溯来删除,我写了以下正则表达式:
(\[)((?=\])|(45(?=\])|45,|(?>([^,]|,(?!45(?:,|\])))))([^\]\])
此正则表达式适用于除最后一种情况之外的所有情况,我们将不胜感激。
最佳答案
使用这个:
(?<=\[)45,?|,?\b45\b
在 C# 中:
resultString = Regex.Replace(yourString, @"(?<=\[)45,?|,?\b45\b", "");
在the regex demo , 查看底部的替换。
解释
- 我们匹配
45
在两种情况下,在|
的两侧交替 - 在左边,lookbehind
(?<=\[)
断言前面的是[
-
45,?
匹配 45 和一个可选的逗号 - 或
|
-
,?
匹配一个可选的逗号 - 和
\b45\b
在单词边界内
关于c# - 从逗号分隔的数字列表中删除数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24858327/