diff --git a/UltiSnips/cmake.snippets b/UltiSnips/cmake.snippets
index dce44d8..bf231c2 100644
--- a/UltiSnips/cmake.snippets
+++ b/UltiSnips/cmake.snippets
@@ -497,38 +497,69 @@ source_group(${1:name}${2:
 	REGULAR_EXPRESSION "${5:regex}"})
 endsnippet
 
-#string(REGEX MATCH <regular_expression>
-#  <output variable> <input> [<input>...])
-#string(REGEX MATCHALL <regular_expression>
-#  <output variable> <input> [<input>...])
-#string(REGEX REPLACE <regular_expression>
-#  <replace_expression> <output variable>
-#  <input> [<input>...])
-#string(REPLACE <match_string>
-#	<replace_string> <output variable>
-#	<input> [<input>...])
-#string(CONCAT <output variable> [<input>...])
-#string(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512>
-#	<output variable> <input>)
-#string(COMPARE EQUAL <string1> <string2> <output variable>)
-#string(COMPARE NOTEQUAL <string1> <string2> <output variable>)
-#string(COMPARE LESS <string1> <string2> <output variable>)
-#string(COMPARE GREATER <string1> <string2> <output variable>)
-#string(ASCII <number> [<number> ...] <output variable>)
-#string(CONFIGURE <string1> <output variable>
-#	[@ONLY] [ESCAPE_QUOTES])
-snippet string "to upper"
-string(TOUPPER ${1:string} ${2:output variable})
+snippet string "regex match"
+string(REGEX MATCH ${1:regex} ${2:output} ${3:inputs})
+endsnippet
+snippet string "regex match all"
+string(REGEX MATCHALL ${1:regex} ${2:output} ${3:inputs})
+endsnippet
+snippet string "regex replace"
+string(REGEX MATCHALL ${1:regex} ${2:replace} ${3:output} ${4:inputs})
+endsnippet
+snippet string "replace"
+string(REPLACE ${1:match} ${2:replace} ${3:output} ${4:inputs})
+endsnippet
+snippet string "concatinate"
+string(CONCAT ${1:output}${2: ${3:inputs}})
+endsnippet
+snippet string "hash"
+string($1`!p snip.rv=complete(t[1], ['MD5', 'SHA1', 'SHA224', 'SHA256', 'SHA384', 'SHA512'])` ${2:output} ${3:input})
+endsnippet
+snippet string "compare equal"
+string(COMPARE EQUAL ${1:string1} ${2:string2} ${3:output})
+endsnippet
+snippet string "compare not equal"
+string(COMPARE NOTEQUAL ${1:string1} ${2:string2} ${3:output})
+endsnippet
+snippet string "compare less"
+string(COMPARE LESS ${1:string1} ${2:string2} ${3:output})
+endsnippet
+snippet string "compare greater"
+string(COMPARE GREATER ${1:string1} ${2:string2} ${3:output})
+endsnippet
+snippet string "ASCII"
+string(ASCII ${1:number}${2: ${3:numbers}} ${4:output})
+endsnippet
+snippet string "configure"
+string(CONFIGURE ${1:string} ${2:output}${3: @ONLY}${4: ESCAPE_QUOTES})
+endsnippet
+snippet string "to upper"
+string(TOUPPER ${1:string} ${2:output})
+endsnippet
+snippet string "to lower"
+string(TOLOWER ${1:string} ${2:output})
+endsnippet
+snippet string "length"
+string(LENGTH ${1:string} ${2:output})
+endsnippet
+snippet string "sub string"
+string(LENGTH ${1:string} ${2:begin} ${3:length} ${4:output})
+endsnippet
+snippet string "strip"
+string(STRIP ${1:string} ${2:output})
+endsnippet
+snippet string "random"
+string(RANDOM${1: LENGTH ${2:length}}${3: ALPHABET ${4:alphabet}}${5: RANDOM_SEED ${6:seed}} ${7:output})
+endsnippet
+snippet string "find"
+string(FIND ${1:string} ${2:substring} ${3:output}${4: REVERSE})
+endsnippet
+snippet string "timestamp"
+string(TIMESTAMP ${1:output}${2: ${3:format}}${4: UTC})
+endsnippet
+snippet string "make C identifier"
+string(MAKE_C_IDENTIFIER ${1:input} ${2:output})
 endsnippet
-#string(TOLOWER <string1> <output variable>)
-#string(LENGTH <string> <output variable>)
-#string(SUBSTRING <string> <begin> <length> <output variable>)
-#string(STRIP <string> <output variable>)
-#string(RANDOM [LENGTH <length>] [ALPHABET <alphabet>]
-#	[RANDOM_SEED <seed>] <output variable>)
-#string(FIND <string> <substring> <output variable> [REVERSE])
-#string(TIMESTAMP <output variable> [<format string>] [UTC])
-#string(MAKE_C_IDENTIFIER <input string> <output variable>)
 
 snippet target_compile_definitions
 target_compile_definitions(${1:target}