2013-10-04 290 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(' ', '[', ']', '*');