2013-10-04 76 views
-1

如何使用正则表达式如下模式来替换字符串正则表达式替换[*

[* 1。简介*]

  1. 简介

我已经 通过

string s="[*1. Introduction*]"; 
s.Replace("[*", string.Empty).Replace("*]", string.Empty); 

简单地更换它的任何等同此USI在C#中正则表达式。

+0

您的代码将工作,你可以使用正则表达式也这样做。哪一个会更好取决于你想要做什么。对于简单的文本行,我可能会使用您的代码。如果你有一个庞大的文件来处理我可能会将其表达。 –

+0

@BenRobinson s.Trim('[','*');也会对样本字符串进行处理。 – Gusdor

+0

@Gusdor我认为它需要s.Trim('[','*',']'),但正如你所说,它可以在“示例字符串”上工作,如果这就是所需要的。例如在字符串的开头或结尾会有一个额外的空格会打断Trim调用,但不会替换。 –

回答

4

是..

Regex.Replace(s,"^\\[\\*|\\*\\]$", string.Empty); 

虽然我建议你坚持使用字符串的替换法..

+2

+1用于保留'string.Replace'方法! – Connell

+0

@ConnellWatkins的确的..Regex会在这里矫枉过正..;) – Anirudha

+0

嗯......也许你应该尝试编译代码...;) – Guffa

3

使用这个正则表达式的优势,将确保它不会取代任何[**]将自行发生。该模式可以匹配两者的发生。

使用这种模式的一个限制是它不能处理嵌套的发生,例如, "Some [*text [*with*] nested*] tags."

String.Replace相比,使用正则表达式的性能大致相同。创建正则表达式时会有一些开销,但在使用String.Replace时,需要遍历字符串两次。

使用正则表达式应该是这样的:

s = Regex.Replace(s, @"\[\*(.+)\*\]", "$1"); 

在模式中的括号捕获标签内有什么,以及$1在替换字符串中使用什么被抓获更换整个标签。

1

就像说@BenRobinson,顺便说一句,我不知道这一点:d

string s = " [*1. Introduction*] ".Trim(' ', '[', ']', '*');