2011-06-29 114 views
1

因爲這是我的第一個問題在這裏stackoverflow我希望我的問題被正確地問。C#正則表達式替換忽略特定的字符串

Basicly我有一個包含像任何文本正常.txt文件:

car accident 
people died 
cat without owner 


<!-- Text added at 6/29/2011 9:20:38 AM --> 

Some addintional Text 
other Text added 
add Text 

我有一個寫/追加功能,允許用戶添加一些文字,並設置一個小時間戳。

所以我的問題是:使用另一個函數,你可以搜索和替換文本文件中的文本,但正如你可以猜測,如果有人想要替換單詞「文本」它將被替換在xml時尚的評論(時間戳)以及。

我的結果等到現在

content = Regex.Replace(content,"[^<+.*"+input+".*>+]*", replace); 
//content = content of the .txt file, input = search term, replace = string to replace 

但失敗草草收場,一些正則表達式Pro的將不執行看到它。

現在我希望一些正則表達式可以幫助我在這裏,併爲我提供一種替換正常文本但忽略時間戳的搜索模式。

我並沒有真正意識到從正則表達式到現在的邏輯,但我理解單個表達式,所以這將成爲我更正確地理解正則表達式的鉤子。

感謝您的建議。

+2

正則表達式:'[^ <+.*BAR.*> +] *'匹配任何字符_except_' '<'',' '+'',' '''','''''',''B','''',''''和'>''零次或多次。請注意,這個正則表達式總是匹配任何2個字符(它匹配空字符串!)。在繼續使用正則表達式之前,最好先閱讀一下IMO:http://www.regular-expressions.info/charclass.html和http://www.regular-expressions.info –

+0

謝謝你,我會去幫助他們 –

+0

對不起,_「任何2個字符之間的匹配」_是錯誤的,我的意思是:_「匹配任何字符之前和之後」_。 –

回答

1

如果我正確理解您的問題,您希望替換除註釋內部的「文本」以外的每個「文本」實例。

的easist方法是使用下面負回顧後(夢幻般的描述here):

content = Regex.Replace(content, @"(?<!<!--.*?)" + input, replace); 

你在做什麼是試圖替換字符的任何長度不是<的重複+ 。*>或input中包含的字符,其值爲replace

如果你打算用正則表達式工作很多,我會強烈建議給網站上面一個很好的閱讀。這是我找到的Regex最好的介紹,現在花的時間將爲您節省很多麻煩!

編輯

更新,其中添加感謝靈活性@stema

+0

喲,感謝那幫助我和它的工作,所以我會繼續閱讀正則表達式教程(再次感謝您的鏈接)。 –

+0

沒問題...快樂的編碼! –

+0

@Matthias R.,這隻有在你想替換「文本」時纔會起作用,因爲反向倒序結尾處的\ s +'。這隻允許'<! - '和搜索到的單詞之間有空格。如果你想變得更靈活,用'。*?'來代替它,這與每個字符的非貪婪匹配。所以'@「(?<!<! - 。*?)」'更靈活。但無論如何+1 @elmugrat – stema