我试图在以下字符串中替换ValueBinding="metasys-value:111,813?“
Canvas.Top="494" Width="75" Height="75" jcge:RubberBand.ID="ce4f76db-9efc-4b5d-b48b-b62f727d53ef" ValueBinding="meta-value:111,813?analogCommand=37&enumCommand=37" AlarmBinding="meta-item:Alarm%20-%20Present%20Value" TrendBinding="meta-item:Trend%20-%20Present%20Value" SecondaryValueBinding="meta-value:222,813?analogCommand=10&enumCommand=44" SecondaryTrendBinding="meta-item:Trend%20-%20Present%20Value" SensorType="Bulb"由新字符串使用
patch = Regex.Replace(patch, "ValueBinding=" + "\".*,813", "ValueBinding=" + "\"" + primaryObjectReference + ",813");但它将字符串替换为第二,813次出现。如何用新值替换ValueBinding="metasys-value:111,813?
发布于 2013-12-30 13:00:31
使用[^\"]*或.*?代替.*,并将\b添加到正则表达式的开头。
\b匹配一个单词边界,例如。ValueBinding前面的空间。
[^\"]*将匹配除"以外的所有字符,.*?将匹配所有非贪婪的字符。
就你而言:
patch = Regex.Replace(patch, "\\bValueBinding=" + "\".*?,813", "ValueBinding=" + "\"" + primaryObjectReference + ",813");发布于 2013-12-30 13:02:47
这听起来很符合逻辑,因为在表达式中有".,813",这也将是111,813和222,813。如果我对它有很好的理解,您必须将".,813“替换为".*111,813\?”。
https://stackoverflow.com/questions/20839928
复制相似问题