Fork me on GitHub

@misha I think you are just under-escaping. Try

  (insta/parser "s = #'\\\\\\\\'")


Since instaparse and Clojure strings both have their own notation of backslash escaping, you unfortunately have to use an obscene amount of backslashes to convey a legitimate backslash character


As that section in the readme explains, one way to get more predictable escaping behavior is to store your grammar in a separate resource file, and that removes one of the layers of escaping (Clojure strings)


@aengelberg thank you, that works. I already put grammar and source string into their own files, before asking for help, might have missed something (like ns reload).


how can I distinguish between \n within a text, and a line end in multiline text? Can I do it without relying on next line's grammar/content? For example, here I need to extract "Simple__ communication example\non several lines" as a single value, w/o including "Alice". Is there a landmark I can use to stop at "visual" line's end?:

title __Simple__ communication example\non several lines
Alice -> Bob: Authentication Request
I tried #'(?m)...$' regex flag, but I doubt it will receive "visual" line as an input.


@misha yeah, from the regex's perspective it's matching against the entire rest of the string, so $ means "end of file", not "end of line". You could use regex's lookahead feature to detect and end of line, like (?=\r?\n)