【发布时间】:2017-05-07 17:45:13
【问题描述】:
所以,标题是怎么说的。如何使用正则表达式提取应用程序参数?
我试过:--.*,但我希望它不匹配,除非它后面有任何字符(空格除外)。所以,这个:--version hello 将匹配 --version,但是 -- hello 不会匹配任何东西。 (注意--和hello之间有一个空格)
我不想使用任何其他库。 (事实上我不能,因为我正在使用 Flex lexer)
有什么想法吗?
马修
【问题讨论】:
-
不太确定你想要达到什么目的,但是......你可以看看boost program options。
-
@G.M.对不起。我会编辑。忘了提到我正在使用 flex,所以除了纯正则表达式之外,我不能使用任何其他库。感谢您查看它。
-
@Galik 请搜索有关 Flex 和 Bison 的信息。它们生成词法分析器和解析器。获取输入数据的唯一方法是将正则表达式与输入匹配,然后您最终可以输出包括此在内的内容。
-
在 Windows 上,应用程序命令和参数由系统进程解析。这调用 CreateProcess,填充 argv 和 argc 参数。在提交给操作系统之前,您是否将其作为完整的字符串?见this 和
(?:^[ \t]*((?>[^ \t"\r\n]+|"[^"]+(?:"|$))+)|(?!^)[ \t]+((?>[^ \t"\\\r\n]+|(?<!\\)(?:\\\\)*"[^"\\\r\n]*(?:\\.[^"\\\r\n]*)*"{1,2}|(?:\\(?:\\\\)*")+|\\+(?!"))+)|([^ \t\r\n]))
标签: c++ regex linux flex-lexer