c# - 从逗号分隔的数字列表中删除数字

标签 c# .net regex regex-negation regex-lookarounds

我有一个数字列表,如下所示:

[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/

相关文章:

c# - Oracle 连接请求超时

c# - 将注册表字符串值读入列表

c# - 非阻塞和重复发生的生产者/消费者通知程序实现

c# - 使用正则表达式平衡组来匹配嵌套标签

python - 优化 - 匹配数据框列中的单词序列

PHP 正则表达式 : extract last number in filename

c# - 访问 ASP.NET Core Controller 中的连接字符串

c# - 为什么 ReactiveUI 依赖旧版本的 System.Reactive?

.net - 转发有冷却时间的 Rx 项目,当它们来得太快时切换到采样

c# - Entity Framework 设置 ID 不应该的时候