Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Отрицательные группы и якоря




 

Еще одной конструкцией регулярных выражений является конструкция, которая позволяет указать, не те символы, которые должны присутствовать в строке, а те которых не должно быть. Например, если нужно вывести только согласные буквы, то можно их перечислить, но можно использовать и отрицательную группу с гласными (рис. 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.Метасимволы, используемые в регулярных выражениях

 

 

Метасимвол Описание метасимвола
.(точка) Предполагает, что в конечном выражении на ее месте будет стоять любой символ. Продемонстрируем это на примере набора английских слов: Исходный набор строк: wake make machine cake maze Регулярноевыражение: ma.e Результат: make maze
\w Замещает любые символы, которые относятся к буквам, цифрам и знаку подчеркивания. Пример: Исходный набор строк: abc а$с a1c а с Регулярное выражение: a\wc Результат: abc a1c
\W Замещает все символы, кроме букв, цифр и знака подчеркивания (то есть является обратным метасимволу \w). Пример: Исходный набор строк: abc а$с a1c а с Регулярное выражение: a\Wc Результат: а$с а с
\d Замещает все цифры. Пример: Исходный набор строк: abc а$с a1c а с Регулярное выражение:a\dc Результат: alc
\D Замещает все символы, кроме цифр, например: Исходный набор строк: abc а$с alc а с Регулярное выражение: a\Dc Результат: abc а$с а с

 










Последнее изменение этой страницы: 2018-06-01; просмотров: 240.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...