Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Отрицательные группы и якоря
Еще одной конструкцией регулярных выражений является конструкция, которая позволяет указать, не те символы, которые должны присутствовать в строке, а те которых не должно быть. Например, если нужно вывести только согласные буквы, то можно их перечислить, но можно использовать и отрицательную группу с гласными (рис. 20).
Рис.20. Использование отрицательной группы
Символ ^ ("крышка") в качестве первого символа группы символов означает отрицание. То есть на месте группы может присутствовать любой символ, кроме символов, перечисленных в ней. Для того чтобы включить отрицание в символьных группах (\d, \w, \s), не обязательно заключать их в квадратные скобки, достаточно перевести их обозначения в верхний регистр. В этом случае выражение \D будет означать "что угодно, кроме цифр", а \S - "всё кроме пробелов", например:
PS C:\> "a","b","1","c","45" -match "\D" a b c PS C:\> "a","-","*","c","&" -match "\W" - * & Символьные группы позволяют указать лишь содержимое одной позиции, один символ, находящийся в неопределенном месте строки. В некоторых случаях требуется выбрать все слова, которые начинаются с определенной буквы, например w. Если просто поместить эту букву в регулярное выражение, то оно совпадёт для всех строк, где w вообще встречается, и не важно – в начале, в середине или в конце строки. В таких случаях используются символы-"якоря". Они позволяют производить сравнение, начиная с определенной позиции в строке. Символ ^ («крышка») является якорем начала строки, а символ $ (знак доллара) - обозначает конец строки. Примечание. Символ ^ как символ отрицания используется лишь вначале группы символов, а вне группы - этот символ является уже якорем. Например, для вывода списка процессов, имена которых начинаются с буквы w можно использовать команду: Get-Process | where {$_.name -match "^w"} Эта команда (рис. 21) вывела процессы, у которых сразу после начала имени (^) следует символ w. Иначе говоря, имя начинается с символа w.
Рис. 21. Список процессов, имена которых начинаются на w
В качестве примера можно привести еще одну команду, в которой используется якорь начала строки (рис.22): Get-Process | where {$_.name -match "^w[^l-z]"}
Рис. 22. Другой вариант списка процессов, имена которых начинаются на w
Эта команда вывела процессы, у которых имя начинается с символа w, а следующий символ является чем угодно, только не символом из диапазона l-z. Еще один пример, в котором используется второй якорь – конец строки (рис. 23): "Яблоки","Груши","Дыня","Лимон","Апельсины","Персики" -match "[ыи]$" Рис. 23. Использование якоря конца строки
Это выражение выводит все слова, в которых последняя буква и или ы. Если известно содержимое всей строки, то можно использовать и оба якоря одновременно (рис. 24): "abc","adc","aef","bca","aeb","abec","abce" -match "^a.[cb]$"
Рис. 24. Использование якоря начала и конца строки
Это регулярное выражение выводит все строки, которые начинаются с буквы a, за которой следует один любой символ (точка), затем символ c или b и затем конец строки. Обозначения некоторых классов символов (метасимволов) приведены в табл. 3
Таблица 3.Метасимволы, используемые в регулярных выражениях
|
||||||||||||||
Последнее изменение этой страницы: 2018-06-01; просмотров: 245. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |