正则表达式检测NSString的语法突出显示

时间:2014-06-30 21:23:30

标签: javascript regex

我试图了解我的Objective C知识,并且我正在为我的笔记编写个人HTML页面。我有一点偏离并创建了一个基本的Javascript语法高亮显示,以突出显示我在页面上写的代码!除了检测NSStrings外,这一切都很顺利。我已经使用正则表达式来检测评论和关键字等但我无法弄清楚如何获取和突出显示NSString内容,如果有可能将这些内容转义如下:

NSString = @"Hello \" world \" string";

到目前为止我已经

@"(([^"])*)"

刚停在第一个"如果字符前面没有反斜杠,我怎么能忽略它?

2 个答案:

答案 0 :(得分:1)

处理转义的简单方法是这样的:

(?:\\.|[^\\"])+

\\成为字面反斜杠,而"是您的近距离引用。

这样做可以匹配转义字符,也可以匹配反斜杠和引号。这意味着它会跳过以反斜杠开头的引号,但它也会正确处理\\\\\\"(提示:这是三个反斜杠和一个紧密的引号)。

随时随地插入这个小宝石,以便处理逃生!

答案 1 :(得分:0)

您可以使用此(?=((?:[^"\\]+|\\.)*))\1代替[^"]*

请注意,由于点默认情况下点不匹配换行符,因此您需要使用单行模式来匹配"转义"换行。

您需要使用模拟原子组,因为双引号不平衡的字符串会在失败之前导致灾难性的回溯。