Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Здесь будет возвращено содержимое второй группы – домен почтового адреса.
Поддерживаются практически все возможности регулярных выражений .Net.
Так, например, используются именованные группы:
"Е-mail: xaegr@yandex.ru" -match "(?<Имя>S+)@(?<Домен>S+)"
Теперь можно получить значения так:
$matches["Домен"]
Или даже так:
$matches.Имя
Еще один оператор, работающий с регулярными выражениями, это -replace. С его помощью легко заменить текст, используя всё те же регулярные выражения. В качестве первого операнда указывается обрабатываемая строка (или массив строк), а в качестве второго – массив из двух элементов.
Первый из них – искомое выражение, а второй – то, на что будет произведена замена.
Так, например, следующая команда возвратит строку «PowerShell»:
"SimpleShell" -replace "Simple","Power"
Если второй элемент массива не указывать, то весь текст, подпадающий под выражение, будет удалён.
"PowerShell" -replace "[wrel]"
Эта команда удалит из строки все символы w, r, e и l. В результате мы получим «Posh». В -replace тоже можно применять группы захвата:
"PowerShell" -replace "(.{5})(.{5})",'$2$1'
Эта строчка вернёт нам значение «ShellPower».
Кстати, я не просто так поместил последнюю строчку в одинарные кавычки. Дело в том, что символ $ используется в PowerShell для обозначения переменных, и в строке, окруженной двойными кавычками, он попытается заменить $1 и $2 значениями соответствующих переменных.
В случае же, если всех вышеперечисленных методов недостаточно, можно использовать класс System.Text.RegularExpressions.Regex из .Net Framework. Создать его экземпляр можно, например, таким образом:
[regex]$r = "[,;]"
А затем посмотреть все его методы с помощью команды Get-Member:
$r | Get-Member -MemberType method
Так только с помощью System.Text.RegularExpressions.Regex можно применить метод Split:
$r.Split("1;2,3,4,5;6")
Как заставить PowerShell сравнивать строки (-eq, -match, -like) учитывая регистр символов?
Все операторы, работающие со строками, имеют версии, чувствительные к регистру символов. Отличаются они лишь приставленной спереди буквой «c» (от Case sensitive).