我试图用正则表达式清理一些狡猾的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'.我该怎么做呢???
迈克尔
您应该使用前瞻构造(匹配前缀但排除它).这样,第一部分(" <TD
"部分)将不匹配,也不会被替换:
"(?<=<\\w*)\\s*(X:\\w*)"
Run Code Online (Sandbox Code Playgroud)