Учитывая некоторые входные данные:
<somexml>
<User Name="MrFlibble">
<Option Name="Pass">SomeSaltedPassword</Option>
<Option Name="Salt">Salt</Option>
<tag1></tag1>
<Permissions>
<Permission Dir="E:"></Permission>
</Permissions>
</User>
<User Name="MrFlobble">
<Option Name="Pass">SomeOtherSaltedPassword</Option>
<Option Name="Salt">Salt</Option>
<tag1></tag1>
<Permissions>
<Permission Dir="C:"></Permission>
</Permissions>
</User>
</somexml>
Я хотел бы заменить первого пользователя, у которого нет разрешения C:
в пользовательской области (в данном случае MrFlibble
), на Jon
и SomeSaltedPassword
с MyNewSaltedPassword
с использованием регулярного выражения .net framework для получения следующего результата:
<somexml>
<User Name="Jon">
<Option Name="Pass">MyNewSaltedPassword</Option>
<Option Name="Salt">Salt</Option>
<tag1></tag1>
<Permissions>
<Permission Dir="E:"></Permission>
</Permissions>
</User>
<User Name="MrFlobble">
<Option Name="Pass">SomeOtherSaltedPassword</Option>
<Option Name="Salt">Salt</Option>
<tag1></tag1>
<Permissions>
<Permission Dir="C:"></Permission>
</Permissions>
</User>
</somexml>
Я думаю, что-то подобное этому регулярному выражению будет захватывать пользователей и группировать разделы, которые я хочу заменить:
<User Name="(.*)">.*<Option Name="Pass">(.*)<\/Option>.*<Option Name="Salt">(.*)<\/Option>.*<\/User>
... но я изо всех сил пытаюсь понять, как бы я заменил три группы при сохранении другого текста. Все документы , по-видимому, предполагают замену модификаций исходного текста, а не нескольких специально названных групп конкретным новым текстом.
Есть ли стандартный способ сделать это, или я лаю неправильнодерево