2011-03-10 51 views
0

嘿,所有,我是新的正則表達式,我已經閱讀了幾個這裏的問題,類似於我正在尋找的,但我仍然不能把我的頭圍繞它。正則表達式語法突出問題

這是用於語法高亮的,我想對它進行類似於XAML的屬性(在「subject =」之前的單詞=紅色,等於仍然回來,然後是等於是不同的顏色

我知道我可以使用查找的屬性,因爲那些是已知的字符串,但我怎麼能匹配字符串=(數據)後才能夠着色?因爲它可能事,我有工作的格式爲「屬性=數據」,這樣的數據是在檢測到空格時,在

謝謝!

編輯

我想清除這個了一下:

因此,這裏是一個消息的一部分,內部paratheisis的顏色是沒有拆開的消息,我希望它是隻什麼顏色: 「subject(red)= somedata(blue),message(red)= {DATA(red)=」somedata「(blue)HEADER(red)=」等等。在空白處。我認爲它應該以非alpha字符結尾。

我嘗試使用

string pattern = "\\s(\\S+)=(\\S+)\\s"; 

而且似乎工作了一點,但它五色「=」一樣的值(我想要的「=」,以保持黑色),由於某種原因,只有隨手抓了一把(但它確實的那些抓住它正確地着色,保存「=」的東西)

+0

你能展示演示你喜歡什麼解析「源代碼」?另外,你已經嘗試了什麼(部分成功?)。 – 2011-03-10 15:23:09

回答

0

你的表情是

\s(\S+)\s*="([^"]+)" 

看一看here

要在.NET中使用它:

string pattern = "\\s(\\S+)\\s*=\"([^\"]+)"\"; 
MatchCollection matches = Regex.Matches(inputString, pattern); 
foreach(Match m in matches) 
{ 
    Console.WriteLine(m.Groups[1].Value); // attrib name 
    Console.WriteLine(m.Groups[2].Value); // attrib value 
} 
+0

值部分沒有引號。 – mgronber 2011-03-10 15:30:03

+0

是的,它已經下降了C#代碼,我加回 – Aliostad 2011-03-10 15:32:06

+1

我很喜歡'((?? \ S +)=(?(?:\ x22 [^ \ x22] + \ x22 | [^> \ s] +)))'親自。 – 2011-03-10 15:40:46