2011-03-10 60 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