What are the correct regular expressions for synta

2019-03-07 08:31发布

问题:

What are the correct regular expressions using NSRegularExpression for syntax highlighting?

The following test must be passed:

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

回答1:

Using PCRE, the (?s) modifier is a single-line mode, where . can even match newlines.

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

Live example

You will notice that the second-to-last line, with nested /* /* */ */ will ONLY match the first /* to the first */, and will not match the */ at the end of the line (which is actually correct behavior).



回答2:

I think it's impossible in global sense (not just on the sample). So, regexp cann't be used for syntax highlighting.