C#正则表达式替换但仅替换编号的子组

Mic*_*ann 2 c# regex

我试图用正则表达式清理一些狡猾的xml属性.

我的输入字符串是这个

<TD X:NUM class=xl101P24_2>I Want to send a FAX:but not </TD>
Run Code Online (Sandbox Code Playgroud)

我想要的输出字符串就是这个

<TD class=xl101P24_2>I Want to send a FAX:but not </TD>
Run Code Online (Sandbox Code Playgroud)

我的代码现在看起来像这样

public static Regex regex1 = new Regex(
      "<\\w*\\s*(X:\\w*)",
    RegexOptions.IgnoreCase
    | RegexOptions.CultureInvariant
    | RegexOptions.IgnorePatternWhitespace
    | RegexOptions.Compiled
    );

public void doRegex()
{
    string InputText = @"<TD X:NUM class=xl101P24_2>I Want to send a FAX:but not </TD>";

    string result = regex1.Replace(InputText,"");

    //result now = " class=xl101P24_2>I Want to send a FAX:but not </TD>"
}
Run Code Online (Sandbox Code Playgroud)

所以我需要进行替换,但只想替换编号的子匹配,即'X:NUM'.我该怎么做呢???

迈克尔

Phi*_*ert 5

您应该使用前瞻构造(匹配前缀但排除它).这样,第一部分(" <TD"部分)将不匹配,也不会被替换:

"(?<=<\\w*)\\s*(X:\\w*)"
Run Code Online (Sandbox Code Playgroud)