Replace multiple numbers with other numbers in a string using REGEX c# -
so have hundreds of these lines below( trimmed alot), want capture default value , set 0.99 lines <movement display_name="movement
type can session or system ,independent of type , min , max, new regex, best do, not want, know there exist replace in regex wasnt able finish first part, please help
true true false true false true false true false true false true false true false red blue yellow green white light grey dark grey pure red orange light blue dark blue magenta light green
<!--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); }
as mentioned need capture , replace max value, take account non-capturing group.
the special character \s+
used indicate 1 or more white spaces.
regex reg = new regex("(movement\s+display_name=\"movement\"\s+type=\".*\" .*min=\".*\"\s+max=\").*(\")");
now can replace not captured group, mean "max" value:
reg.replace(texttosearch, "$10.99$2");
what did here keep captured groups , replace not captured value: "$1<replacement>$2"
. captured groups can accessed via reference $<group>
.
you can test regular expressions here: http://regexr.com/
Comments
Post a Comment