Makefile中扩展正则表达式列表的分隔符

时间:2014-01-05 00:26:54

标签: c++ regex utf-8 sed makefile

我需要将一系列正则表达式应用于输入流。 我写了一个使用@(foreach ...)的Makefile 在字符串中创建sed命令序列, 然后成为食谱的一部分,即:

output: $(files)
    command | $(dynamicSed) > $@

例如:要使几个编译器中的每一个的选项看起来像另一个编译器的选项,我可能有一个Makefile变量,如:

define compilerConfig
cca|ccb:-d@-D|-H@-I
ccc:-d@-D
endef

在Makefile中,我根据选择的编译器生成$(dynamicSed)。 我选择了@作为sed分隔符 因为在实际应用程序中有许多涉及/的正则表达式。 我选择|来分隔正则表达式 因为我目前没有任何涉及替代品的正则表达式, 如果我这样做,他们总是可以写成两个正则表达式。 有更好的选择吗? 即,是否有一个字符更少出现并且不被扩展的POSIX正则表达式使用?

不幸的是,我不能依赖utf8这个特定的应用程序。 但是,如果可以的话,utf8是否具有明显的特征 被定义为专门用作分隔符?

1 个答案:

答案 0 :(得分:1)

您可以更改$(dynamic_sed)的搜索/替换组件,以在任何冲突的分隔符字符前面添加\。然后你可以使用任何分隔符,这没关系。注意:这将在生成$(dynamic_sed)

时完成