繁体   English   中英

正则表达式替换 c#

[英]Regex Replace c#

string formattedFormula = Regex.Replace("A1+A1", "(?!A1\\d+)[A1]" , "{" + 0 + "}");

我需要 {0}+{0} 的结果。 但是此代码替换为 {0}{0}+{0}{0}

这只是一个例子。

using System;
using System.Text.RegularExpressions;

public class HelloWorld
{
    public static void Main(string[] args)
    {
       string formattedFormula = Regex.Replace("A1+A1", "(?!A1\\d+)[A1]" , "{" + 0 + "}");
        Console.WriteLine (formattedFormula);
    }
}

我的真实代码是

foreach (string columnCode in parameters)
            {
                string pattern = string.Empty;

                if (!Common.Common.IsNumaric(columnCode))
                {
                    pattern = "(?!" + columnCode + "\\d+)[" + columnCode + "]";

                    stringList.Add(columnCode);
                    incrementor++;

                    formattedFormula = Regex.Replace(formattedFormula, pattern, "{" + incrementor.ToString() + "}");
                }
                else
                {
                    continue;
                }
            }

在此处输入图像描述

您可以使用

pattern = $@"\b(?!{columnCode}\d){columnCode}\b";

查看生成的正则表达式演示 它匹配

  • \b - 单词边界
  • (?!A1\d) - 如果有A1 + 一个数字,则匹配失败
  • A1 - 固定文本
  • \b - 单词边界。

这种模式适用于我的场景。

pattern = "(?:\\d+["+ columnCode + "]|["+ columnCode + "]+\\d)["+ columnCode + "\\d]*";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM