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
Using PCRE, the (?s) modifier is a single-line mode, where .
can even match newlines.
(?ms)(//[^\n]+|/\*.*?\*/)
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).
I think it's impossible in global sense (not just on the sample). So, regexp cann't be used for syntax highlighting.
来源:https://stackoverflow.com/questions/24168145/what-are-the-correct-regular-expressions-for-syntax-highlighting