【问题标题】:C# Regex Replace expression [closed]C# 正则表达式替换表达式 [关闭]
【发布时间】:2012-12-29 06:16:39
【问题描述】:

我有一个这样的字符串:“编程是我的热情,我喜欢程序”

现在我需要使用 Regex Replace 来更改它。每个包含表达式“program”的单词都应该切换到:

<a href="http://codeguru.pl" title="programming">programming</a>

任何帮助将不胜感激。

【问题讨论】:

  • 首先查看Regex.Replace() 的方法定义。
  • 您真的希望“我的热情”成为“程序”替代品的一部分吗?
  • 你有兴趣得到这个表格的输出吗? <a href="http://codeguru.pl" title="programming">programming</a> is my passion, I love <a href="http://codeguru.pl" title="programs">programs</a>
  • 感谢您的回复。我尝试使用它:Regex.Replace(string, "program*\s", ""),但我不知道第三部分应该是什么。 ~Barmar,谢谢,我的错。
  • 第三部分是您要替换 "program*\s" 的字符串。在您的情况下,它将是锚标记。

标签: c# .net regex string replace


【解决方案1】:

String.Replace 最好在这里打赌。

var input = "programming is my passion, I love programs";
var replacefrom = "program";
var tobereplaced =@"<a href=""http://codeguru.pl"" title=""programming"">programming</a> is my passion";

var output = input.Replace(replacefrom, tobereplaced)

Regex.Replace

Regex regex = new Regex("program");
var outputRegex = regex.Replace(input, tobereplaced); // input, tobereplaced from above snipped

输出

<a href="http://codeguru.pl" title="programming">programming</a> is my passionming is my passion, I love <a href="http://codeguru.pl" title="programming">programming</a> is my passions

【讨论】:

  • 垃圾输入,垃圾输出的一个很好的例子(输出文本,不是你的答案)。
【解决方案2】:

单行就足够了:

new Regex(@"\b\w*program\w*\b").Replace("programming is my passion, I love programs", @"<a href=""http://codeguru.pl"" title=""programming"">programming</a>");

其中\b\w*program\w*\b 匹配任何包含program 的单词。

如果要根据匹配的单词更改链接的文本,请使用反向引用:

new Regex(@"(\b\w*program\w*\b)").Replace("programming is my passion, I love programs", @"<a href=""http://codeguru.pl"" title=""programming"">$1</a>");

此版本在模式周围添加括号,并使用$1(而不是硬编码字符串“programming”)来引用匹配的单词。 现在输出将是:

<a href="http://codeguru.pl" title="programming">programming</a> is my passion, I love <a href="http://codeguru.pl" title="programming">programs</a>

【讨论】:

  • 感谢您的解决方案,它帮助了我。但是如果我想要这个输出,我应该在代码中改变什么:&lt;a href="http://codeguru.pl" title="programming"&gt;programming&lt;/a&gt; is my passion, I love &lt;a href="http://codeguru.pl" title="programming"&gt;programs&lt;/a&gt;
  • @Will 你可以在正则表达式中使用反向引用。我已经在答案中更新了它。
  • 非常感谢您,您对我帮助很大。一切顺利,问候
  • @Will 我的荣幸。给您的一个建议:为避免对您的问题投反对票,您可以使您的问题更加明确,以反映您在上一条评论中的具体要求。
【解决方案3】:

解决办法..

    Pattern pattern = Pattern.compile("(\\w+|\\W)");
    Matcher m = pattern.matcher("programming is my passion, I love programs");
    while (m.find())
    {
    Pattern pattern1 = Pattern.compile("(program)");
    Matcher m1 = pattern1.matcher(m.group());

    if(m1.find())
        System.out.print(m.group().replace(m.group(), "<a href="+"http://codeguru.pl"+" title="+"programming"+">programming</a>"));
    else
        System.out.print(m.group());
}

输出:

<a href=http://codeguru.pl title=programming>programming</a> is my passion, I love <a href=http://codeguru.pl title=programming>programming</a>

【讨论】:

  • 这与问题中所述的输出不同。它也不符合您的代码将要执行的操作。
  • 是的,它有效。但如果我想要一个独特的解决方案,例如。 x.: `codeguru.pl" title="programming"> 包含表达式 program 的单词 ?
  • 不清楚您的独特解决方案,如果您提供一个完整的输入和输出示例(您到底想要什么),就像您的问题一样......然后我会更新我的答案
  • 谢谢,它帮助了我。独特的解决方案我的意思是输出:&lt;a href="http://codeguru.pl" title="programming"&gt;programming&lt;/a&gt; is my passion, I love &lt;a href="http://codeguru.pl" title="programming"&gt;programs&lt;/a&gt;:所有带​​有表达式程序的单词都保留,并链接到页面
  • 问题已解决,感谢您的宝贵时间,问候
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
相关资源
最近更新 更多