所以我在下面有数百行(我修剪了很多),我想捕获DEFAULT值并设置为0.99但是只有WITH <Movement display_name="Movement
类型的行可以是会话或系统,独立于类型和min和max,我是REGEX的新手,这是我能做的最好的,不过它不是我想要的,我知道regex中存在替换但是我无法完成第一部分,请帮助
的 真正 真正 假 真正 假 真正 假 真正 假 真正 假 真正 假 真正 假 红色 蓝色 黄色 绿色 白色 浅灰色 深灰色 纯红色 橙子 浅蓝 深蓝 品红 浅绿色
<!--Default Values-->
<Indexed display_name="Indexed" type="system" datatype="pos_int" max="4" min="1" security_level="SU"
default_value="2" />
<IndexingColor1 display_name="IndexingColor1" type="system" datatype="list" security_level="SU"
default_value="RED">
<Cube>
<ShowFrame display_name="ShowFrame" type="system" datatype="list" security_level="CU"
default_value="true">
<list>
<ListItem>true</ListItem>
<ListItem>false</ListItem>
</list>
</ShowFrame>
<ShowFixedPoint display_name="ShowFixedPoint" type="system" datatype="list" security_level="CU"
default_value="true">
<list>
<ListItem>true</ListItem>
<ListItem>false</ListItem>
</list>
</ShowFixedPoint>
<FixedPointPosition display_name="FixedPointPosition" type="system" datatype="list" security_level="AU"
default_value="0">
<list>
<ListItem>-1</ListItem>
<ListItem>-0.5</ListItem>
<ListItem>0</ListItem>
<ListItem>0.5</ListItem>
<ListItem>1</ListItem>
</list>
<Timing>
<FirstPresentation display_name="FirstPresentation" type="system" datatype="float" max="0.0" min="0.0" security_level="CU"
default_value="0.0" />
<Indexing display_name="Indexing" type="system" datatype="float" max="0.0" min="0.0" security_level="CU"
default_value="0.0" />
**<Movement display_name="Movement" type="system" datatype="float" max="0.0" min="0.0" security_level="CU"
default_value="0.0" />**
<Pause display_name="Pause" type="system" datatype="float" max="0.0" min="0.0" security_level="CU"
default_value="0.0" />
<Feedback display_name="Feedback" type="system" datatype="float" max="0.0" min="0.0" security_level="CU"
default_value="0.0" />
<Answer display_name="Answer" type="system" datatype="float" max="0.0" min="0.0" security_level="CU"
default_value="0.0" />
<AutoValidate display_name="AutoValidate" type="system" datatype="float" max="0.0" min="0.0" security_level="CU"
default_value="0.0" />
</Timing>
MatchCollection Collections = Regex.Matches(parameters, "<Movement display_name=\"Movement\" type=\"(<type> .*?).*? min=\"(<min> .*?) .*? max=\"(<max> .*?)\" />", RegexOptions.Singleline);
foreach(Match match in Collections)
{
Console.WriteLine(match.Groups["type"].Value);
Console.WriteLine(match.Groups["max"].Value);
}
答案 0 :(得分:1)
你可以使用这样的正则表达式:
max=".*?"
并使用替换字符串:
max="0.99"
<强> Working demo 强>
string input = "YOUR STRING HERE";
Regex rgx = new Regex("max=\".*?\"");
string result = rgx.Replace(input, "max=\"0.99\"");
Console.WriteLine("Original String: {0}", input);
Console.WriteLine("Replacement String: {0}", result);
答案 1 :(得分:1)
正如您所提到的,您需要捕获并替换 max 值,我将仅考虑非捕获组。
特殊字符\s+
用于表示一个或多个空格。
Regex reg = new Regex("(Movement\s+display_name=\"Movement\"\s+type=\".*\" .*min=\".*\"\s+max=\").*(\")");
现在您可以替换非捕获的组,我的意思是“最大”值:
reg.Replace(textToSearch, "$10.99$2");
我在这里做的是保留捕获的群组,只替换未捕获的值:"$1<replacement>$2"
。可以通过$<group>
引用来访问捕获的组。
您可以在此处测试正则表达式: http://regexr.com/