我正在目录
将所有头文件中的LONG字符串替换为SVN_LONG。
我不想将 LONG,LONG , LONG 替换为SVN_LONG。
那么如何避免SLONG,LONGINT不能替换,只有LONG字符串必须替换SVN_LONG?
<iframe width="560" height="315" src="https://www.youtube.com/embed/6bv0IvzNcvY?showinfo=0&rel=0&autoplay=1&loop=0&playlist=b4ZeoLkeoec,6bv0IvzNcvY" frameborder="0" allowfullscreen></iframe>
答案 0 :(得分:1)
与正则表达式一样,您需要在替换字符串之前匹配符号并将其还原为替换字符串。为此目的,命令string(REGEX REPLACE)
支持反向引用:
string(REGEX REPLACE "([^a-zA-Z])LONG|^LONG" "\\1SVN_LONG"
modified_file_content ${file_content})
给定命令在单词LONG
之前匹配单个符号(应该与字母不同),并通过反斜杠引用\1
恢复此符号(符号&#34; \&#34;需要为在cmake命令中加倍,因为它在转到命令之前由CMake自己解析。)
字符串开头的匹配^
需要以LONG
开始的轮换。