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

时间:2011-09-23 16:17:04

标签: c# regex

我有一个字符串

   "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>"

任何帮助将不胜感激。

由于

3 个答案:

答案 0 :(得分:1)

试试这个(注意你需要绕着1转义括号):

\W15\(1\)\W

其中\W是非单词字符;或

\s15\(1\)\s

其中\s是一个空白字符。

答案 1 :(得分:1)

在您的帖子中,您说要“单独使用”时要替换“15(1)”。这是否意味着它被空白包围?

此方法符合您所需的输出:

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

此模式仅在值出现在行的开头或前面有空格字符时才匹配,如果后面跟着空格字符或行的末尾。

答案 2 :(得分:1)

这有效(?<!\S)15\(1\)(?!\S)