做系統(tǒng)下載網(wǎng)站建設(shè)/最新經(jīng)濟(jì)新聞
以下字符或者字符組合在cmake的正則表達(dá)式中的特殊含義:
^
匹配輸入的開始
$
匹配輸入的結(jié)束
.
匹配任意一個(gè)字符
\<char>
匹配一個(gè)字符,如.匹配字符.,\匹配字符\,\a匹配字符a
[?]
匹配在括號(hào)里面的任意字符,如果希望匹配字符],那么把]寫在第一個(gè)位置,如: ?[]ab]
[^?]
匹配除了括號(hào)里面的字符的任意字符。如[^]ab]
匹配任意非a和b的字幕
-
在[]里面表示一個(gè)字符的范圍,如[a-f]表示[abcdefg]
*
匹配前面的模式0次或者n次。
+
匹配前面的模式1次或者n次。
?
匹配前面的模式0次或者1次。
|
匹配前面的模式或者后面的模式,如?^(ab|cd)$
匹配ab 或者cd。
()
保存一個(gè)匹配的子串,以便后面可以被REGEX?REPLACE
引用,在3.9以后的cmake版本,會(huì)將匹配的子串保存在CMAKE_MATCH_變量中。
關(guān)于轉(zhuǎn)義:
\t \r \n \ 用來(lái)表示字符轉(zhuǎn)義。如:
-
"[?\t\r\n]"
表示匹配一個(gè)空白字符. -
"[/\\]"
?表示匹配字符/或者\(yùn)。 -
"[A-Za-z0-9_]"
?表示匹配所有字母、數(shù)字和下劃線。 -
"\\(\\a\\+b\\)"
?表示匹配(a+b).
因?yàn)閏make用""或者’'定義的字符串對(duì)于字符串是有一層轉(zhuǎn)義的,在cmake的正則中又有一層轉(zhuǎn)義,雙層轉(zhuǎn)義會(huì)導(dǎo)致理解困難。因此,盡量使用[=[字符串]=]這種lua格式的字符串,避免cmake本身的轉(zhuǎn)義帶來(lái)的尷尬,譬如 "\\(\\a\\+b\\)"
?可以寫成 [[(a+b)]]
注意
cmake的正則表達(dá)式不支持特定次數(shù)的匹配,如"a{1,3}"
這種匹配一個(gè)或者三個(gè)a的正則。