【问题标题】:Regex replace a pattern with another pattern正则表达式用另一个模式替换一个模式
【发布时间】:2013-04-03 00:31:20
【问题描述】:

谁能帮我写一个正则表达式,结果如下,用html标签替换bbcode,因为这里我想用<strong></strong>替换[b][/b]

所以这个:

 "fsdfs [b]abc[/b] dddfs [b]abc[/b] fdsfdsfs [b]abcfsdfs" 

变成:

 "fsdfs <strong>abc</strong> dddfs <strong>abc</strong> fdsfdsfs [b]abcfsdfs"

以下正则表达式是否有助于解决这个问题?

 string result = Regex.Replace(s, @"\[b\](.*?)\[\/b\]", @"\<stront\>(.*?)\<\/strong\>");

【问题讨论】:

  • &lt;stront\&gt; 应该是 &lt;strong\&gt; 你尝试做什么。
  • 我明白了,问题本质上是:如何使用正则表达式将"fsdfs [b]abc[/b] dddfs [b]abc[/b] fdsfdsfs [b]abcfsdfs" 转换为"fsdfs &lt;strong&gt;abc&lt;/strong&gt; dddfs &lt;strong&gt;abc&lt;/strong&gt; fdsfdsfs [b]abcfsdfs"。将输入和输出放在同一行是一个不幸的选择。
  • 我猜您只想将 [B] 替换为 [STRONG],其中 [B] 在原始字符串中有一个结束 [/B]。这在 Regex 中不是一件好事,因为 regex 不适合解析 HTML。为什么?阅读:stackoverflow.com/questions/1732348/…
  • 为什么要转义替换中的尖括号?

标签: c# regex


【解决方案1】:

以下应该有效:

string s = "fsdfs [b]abc[/b] dddfs [b]abc[/b] fdsfdsfs [b]abcfsdfs";
string result = Regex.Replace(s, @"\[b\](.*?)\[/b\]", @"<strong>$1</strong>");

示例:http://ideone.com/xwP1EL

【讨论】:

  • 作为一个思想实验,这非常有效。但在实践中,这根本不是管理 Html 的好方法。考虑改用 Html Agility 包之类的东西不会有什么坏处。 stackoverflow.com/questions/6540154/…
猜你喜欢
  • 1970-01-01
  • 2022-10-01
  • 2023-01-31
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2012-02-12
  • 2014-05-21
相关资源
最近更新 更多