在 {} 之间有一条线,其中设置了插入变量的位置。对于数字变量,您可以指定插入格式,{AddressDevice:X2}
这意味着变量AddressDevice = 5将以十六进制格式插入05。
例如,有一行:
"STX{AddressDevice:X2}{Nbyte:X2}"
只有 {AddressDevice:X2} 需要在其中替换。我做了一个实现,我用 } 分割行,然后分别解析它们,这在某种程度上不是最优的。请让我知道这是否可以完成
Regex.Replace(...)
如果AddressDevice = 5,粘贴后应该是“STX05{Nbyte:X2}”
解决方案是对此答案的改编:
结论:
正则表达式查找匹配项并在其中选择两个组(根据括号对的数量),然后我们通过索引(1 和 2,因为零组是整个表达式)来引用它们。
.*?- 任意*字符 ( ) 的任意数字 (.),搜索是惰性的 (?),即它捕获与模式匹配的最少字符数(如果该组是贪婪的,默认情况下,它将捕获第一次打开之间的所有内容最后一次关闭花括号。:.+?— 冒号 (:) 后跟一个或多个 (+) 任意字符 (.),惰性搜索 (?)。(...)?- 该组是可选的,如果不是,我们只会得到一个空字符串。