powershell — извлеките одно слово из строки

#powershell

Вопрос:

У меня есть веревочка:

 <UserInputs><UserInput Question="Groupname" Answer="amp;<Values Count=amp;quot;1amp;quot;amp;>amp;<Value DisplayName=amp;quot;AllHummanresourcesamp;quot; Id=amp;quot;af05c5d3-2312-c897-8439-08979d4d0a49amp;quot; /amp;>amp;</Valuesamp;>" Type="System.SupportingItem.PortalControl.InstancePicker" /><UserInput Question="Ausgabe" Answer="Namen" Type="richtext" /></UserInputs>
 

Я хочу обрезать строку, чтобы получить в результате «AllHummanresources«. Так что мне нужно слово между DisplayName=amp;quot; и amp;quot; .

Как я могу достичь этой цели? Я не нашел подходящего примера в сети 🙁

приветствие

Комментарии:

1. Эта «строка», похоже, взята из структуры XML-файла… В этом случае существуют более эффективные методы доступа к нужной вам ценности.

2. И странно, что Answer= еще одна экранированная xml-строка <Values Count="1"><Value DisplayName="AllHummanresources" Id="af05c5d3-2312-c897-8439-08979d4d0a49" /></Values>

Ответ №1:

Вы можете использовать Select-String командлет вместе с регулярным выражением.

 $result = $your_string |  Select-String -Pattern "DisplayName=amp;quot;(.*?)amp;quot;"
 

Если совпадение пройдет успешно, вы сможете получить доступ к группе по

 Write-Host $result.Matches.Groups[1].Value
 

Комментарии:

1. хорошо, спасибо. как мне перевести мой «исходный код» в строку? Есть некоторые кавычки, я это то, что вызывает проблемы, если я просто делаю $your_string = «………….»

2. @rolfderwolf Заключите свою строку в одинарную кавычку…

3. да, и в этом тоже есть проблема. Я получаю $имя Успех : Истинное имя : 1 Захватывает : {1} Индекс : 94 Длина : 6 Значение : Все человеческие ресурсы, а не только все человеческие ресурсы

4. @rolfderwolf Так и должно быть $result.Matches.Groups[1].Value . Я отредактировал свой ответ.

5. Или $name.Value

Ответ №2:

Вы могли бы использовать -replace оператор, чтобы опустить все, кроме этой строки.

$string -replace '. (?:DisplayName=amp;quot;)(.*?)amp;quot. ', '$1'

Конечно, это так же хорошо, как согласованность вашей входной строки.