2011-01-25 18 views
1

的文本在字符串中使用正則表達式和$時存在以下問題。如果任何人都可以幫助的話。

bla在下面的文字是隨機詞語。

string text = "<id='$text1$text2$text3'><div>bla bla bla text3 bla bla</div>"; 
string pattern = "\btext3\b"; 
text = Regex.Replace(text, pattern, "####"); 

如果我上面做的,它將取代雙方文字3。我只想改變div元素的值,所以結果變成:<id='$text1$text2$text3'> <div>bla bla bla #### bla bla</div>

在此先感謝!

+0

來自我最喜歡的網站:「\ b匹配單詞字符(任何與\ w匹配的任何內容)和非單詞字符(任何與[^ \ w]或\ W匹配的任何內容)之間的位置以及如果字符串中的第一個和/或最後一個字符是單詞字符,則開始和/或結束字符串。「 - http://www.regular-expressions.info/reference.html – 2011-01-25 16:10:02

+0

我讀過關於\ b的「規格」,完全不瞭解它。這就是爲什麼我問。我能否另外解決我的問題?我嘗試了一些組合,但他們變得非常「複雜」。 – BaxterBoom 2011-01-25 16:20:13

+0

@Loppus fyi,您應該添加@姓名來回復某人,他們會在他們的收件箱中以這種方式收到一條消息。使用正則表達式來解析HTML或XML從來沒有像人們希望的那樣工作。在你的特定情況下,你是否想在所有情況下都匹配「text3」,除了前面帶有「$」的情況?或者是否有其他同樣具體的情況,不涉及使用正則表達式解析HTML/XML?如果是的話......把它縮小到這個範圍。 – 2011-01-25 17:00:21

回答

1
string pattern = @"\btext3\b(?![^<>]*>)"; 

這種快速和骯髒的解決方案依賴於幾個簡單的假設,因爲所有的正則表達式必須,如果他們要在HTML中。例如,它假定屬性值中不會有任何尖括號。這是合法的(至少在HTML中),但在實踐中非常罕見。

1
string pattern = ">text3<"; 
text = Regex.Rplace(text,pattern,">####<");