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