使用Regex替换特定的字符串,但忽略基于相邻字符的其他字符串

本文关键字:字符串 于相邻 其他 字符 替换 Regex 使用 | 更新日期: 2023-09-27 18:09:41

我有一个字符串

   "sub section 15(1) of main section, this might be a <link href="15(1)">15(1)</link>". 

我想使用Regex.Replace方法将"15(1("替换为新的字符串值"15",但仅限于单独出现的情况。

我正在使用以下模式,但它不起作用。

 temp = "sub section 15(1) of main section, this might be a <link href="15(1)">15(1)</link>";    
 temp = Regex.Replace(temp, @"15(1)", @"15");

输出字符串应为:

"sub section 15 of main section, this might be a <link href="15(1)">15(1)</link>"

任何帮助都将不胜感激。

感谢

使用Regex替换特定的字符串,但忽略基于相邻字符的其他字符串

在你的帖子中,你说当"15(1("被"单独使用"时,你想替换它。这意味着当它被空白包围时?

这种方法符合您想要的输出:

string pattern = @"(?<=^|'s)15'(1')(?='s|$)";
string result = Regex.Replace(input, pattern, "15");
Console.WriteLine(result);

只有当值出现在行的开头或前面有空白字符,并且后面有空白字符或行的末尾时,此模式才会匹配。

试试这个(注意你需要转义1周围的括号(:

'W15'(1')'W

其中CCD_ 2是非单词字符;或

's15'(1')'s

其中CCD_ 3是空白字符。

这适用于(?<!'S)15'(1')(?!'S)