cmake中的正则表达式

以下字符或者字符组合在cmake的正则表达式中的特殊含义:

^ 匹配输入的开始

$ 匹配输入的结束

. 匹配任意一个字符

\<char> 匹配一个字符,如.匹配字符.,\匹配字符\,\a匹配字符a

[ ] 匹配在括号里面的任意字符,如果希望匹配字符],那么把]写在第一个位置,如:  []ab]

[^ ] 匹配除了括号里面的字符的任意字符。如[^]ab]匹配任意非a和b的字幕

- 在[]里面表示一个字符的范围,如[a-f]表示[abcdefg]

* 匹配前面的模式0次或者n次。

+ 匹配前面的模式1次或者n次。

? 匹配前面的模式0次或者1次。

| 匹配前面的模式或者后面的模式,如 ^(ab|cd)$匹配ab 或者cd。

() 保存一个匹配的子串,以便后面可以被REGEX REPLACE引用,在3.9以后的cmake版本,会将匹配的子串保存在CMAKE_MATCH_变量中。

关于转义:

\t \r \n \ 用来表示字符转义。如:

  • "[ \t\r\n]" 表示匹配一个空白字符.

  • "[/\\]" 表示匹配字符/或者\。

  • "[A-Za-z0-9_]" 表示匹配所有字母、数字和下划线。

  • "\\(\\a\\+b\\)" 表示匹配(a+b).

因为cmake用""或者’'定义的字符串对于字符串是有一层转义的,在cmake的正则中又有一层转义,双层转义会导致理解困难。因此,尽量使用[=[字符串]=]这种lua格式的字符串,避免cmake本身的转义带来的尴尬,譬如 "\\(\\a\\+b\\)" 可以写成 [[(a+b)]]

注意
cmake的正则表达式不支持特定次数的匹配,如"a{1,3}" 这种匹配一个或者三个a的正则。

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农心语

您的鼓励是我写作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值