语法突出显示的正确正则表达式是什么?

时间:2014-06-11 16:37:40

标签: objective-c regex nsregularexpression

使用NSRegularExpression进行语法突出显示的正确正则表达式是什么?

必须通过以下测试:

code // comment
code /* comment */ code
code "string" code

code // comment
  code
code /* comment
  comment */ code
code "string
  code" string
code "string\
  string" code

code // comment "comment"
code /* comment "comment" */ code
code "string /* string */ // string" code

code // comment
  "string"
code /* comment
  "comment" */ code
code "string
  /* comment */ // comment" string
code "string\
  /* string */ // string" code

code // comment // comment
code /* comment /* comment */ code */
code "string \" string" code "string" code

2 个答案:

答案 0 :(得分:1)

使用PCRE,(?s)修饰符是单行模式,.甚至可以匹配换行符。

(?ms)(//[^\n]+|/\*.*?\*/)

Live example

您会注意到,嵌套/* /* */ */的倒数第二行仅与第一个/*匹配*/,与*/不匹配在行的末尾(这实际上是正确的行为)。

答案 1 :(得分:0)

我认为这在全球意义上是不可能的(不仅仅是样本)。因此,regexp不能用于语法高亮。