【发布时间】:2021-04-20 10:41:42
【问题描述】:
需要正则表达式来检测单行中的字符串,我尝试了这个正则表达式\"(\\.|[^"\\])*\",但这也适用于多行
输入:
示例:
this is a "string
and the string ends here"
我希望正则表达式仅检测第一行中的字符串 ("string)
我该怎么办?
【问题讨论】:
标签: regex flex-lexer lex lexical-analysis
需要正则表达式来检测单行中的字符串,我尝试了这个正则表达式\"(\\.|[^"\\])*\",但这也适用于多行
输入:
示例:
this is a "string
and the string ends here"
我希望正则表达式仅检测第一行中的字符串 ("string)
我该怎么办?
【问题讨论】:
标签: regex flex-lexer lex lexical-analysis
您的正则表达式可以识别多行,因为
[^"\\]
接受换行符:它接受除引号 (") 或反斜杠 (\) 以外的任何内容,并且换行符既不是引号也不是反斜杠。在排除字符列表中添加换行符 (\n)。
请注意,在 (f)lex 中,. 实际上意味着 [^\n]:除了换行符之外的任何内容。这并不意味着“匹配任何东西”。所以\\. 匹配反斜杠,后跟换行符以外的任何内容。但是许多语言也允许您使用反斜杠来转义换行符:
"This long string is \
continued on a second line."
当然,这不是必需的,字符串文字连接可能是一种更有用的语法。这完全取决于您的具体要求。
【讨论】:
(.*)\n
我觉得这够了吗?
\A(.*)\n
如果有两行以上,这会有所帮助
【讨论】: