C# RScript的FlowDocumentControl中的语法突出显示

C# RScript的FlowDocumentControl中的语法突出显示,c#,regex,flowdocument,rscript,C#,Regex,Flowdocument,Rscript,我们已经使用下面的正则表达式函数来突出显示字符串和数字 字符串正则表达式函数 public string StringRegEx { get { return @"@?""""|@?"".*?(?!\\).""|''|'.*?(?!\\).'"; } } public string NumberRegEX { get { return @"[0-9].*?(?=:[0-9]*)?"; } } 数字正则表达式函数 public string StringRegEx {

我们已经使用下面的正则表达式函数来突出显示字符串和数字

字符串正则表达式函数

public string StringRegEx
{
    get { return @"@?""""|@?"".*?(?!\\).""|''|'.*?(?!\\).'"; }
}
public string NumberRegEX
{
    get { return @"[0-9].*?(?=:[0-9]*)?"; }
}
数字正则表达式函数

public string StringRegEx
{
    get { return @"@?""""|@?"".*?(?!\\).""|''|'.*?(?!\\).'"; }
}
public string NumberRegEX
{
    get { return @"[0-9].*?(?=:[0-9]*)?"; }
}
在使用这个正则表达式函数时,我们遇到了一些突出显示字符串包含数字的问题

p1 = 1
p2 = 0.2


在本例中,p1和p2中的1和2也高亮显示。如何跳过与字符串一起突出显示的数字?

有关如何在处理编程语言片段时正确捕获内容的更一般方法,

您的问题可能不是“字符串中的注释,注释中的字符串”,但它是类似的,即“字符串中的字母以数字开头,字符串中的数字以字母开头”,因此您需要一种类似的方法,使用管道分隔的正则表达式进行不同的匹配


对这种设计模式的更全面的解释是

您的字符串正则表达式包含匹配所有的
。您可以使用
[A-Za-z]
p1和p2不匹配第一个正则表达式(用于匹配字符串文字-但有错误)。它只与第二个正则表达式匹配。顺便说一句,你的正则表达式很差。