Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 2

Использование регулярных выражений

24.12.2015, 10:59. Показов 2415. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане!
Подскажите пожалуйста. Уже мозг сломал. Есть массив $arrayA, содержащий множество модифицированных distinguishedName неких групп из AD. Записи в нем имеют вид:

"group1, department1, contoso, com"
"group2, department2, contoso, com"
......

Кроме того, есть переменная $b = "department"

Нужно написать регулярное выражение, при помощи которого из массива $arrayA будет выбираться строка, в которой название департамента будет совпадать с названием департамента в переменной $b. Все вроде просто. Я написал следующее:

PowerShell
1
2
3
4
5
foreach ($a in $arrayA) {
   If ($a -match "\w+,\s$b,\s.*") {
      ...некий код...
   }
}
Такой скрипт нормально работает и при нахождении в массива $arrayA искомых строк выполняет "...некий код...", пока в имени департамента не встречается символ "$". То есть значение переменной:

$b = "department$"

а строка в массиве $arrayA:

"supergroup, department$, contoso, com"

Такая строка благополучно пропускается и "...некий код..." не выполняется, хотя должен по идее. Не могу понять, как исправить регулярное выражение, чтобы оно не пропускало такие строки?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2015, 10:59
Ответы с готовыми решениями:

Использование регулярных выражений для проверки введённой строки на наличие определённых символов
Подскажите как реализовать: Нужно чтобы при указании имени папки скрипт проверял его на корректность, т.е. нельзя же использовать сиволы...

Синтаксис регулярных выражений
Уважаемые программисты! Такой вопрос! Есть такое выражение: $text=::replace($text,' ', ' ') Предполагаю, что это...

Использование регулярных выражений в GO
Регулярные выражения(RegEx) — система обработки текста, основанная на специальной системе записи образцов для поиска. Образец (англ....

2
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
24.12.2015, 14:03
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

С точки зрения регулярных выражений знак $ является якорным символом, указывающий на окончание строки.
PowerShell
1
2
3
PS C:\> $s = 'supergroup, department$, contoso, com'
PS C:\> $s -match 'department$'
False
$ аналогичен escape-последовательности \Z:
PowerShell
1
2
PS C:\> $s -match 'department\Z'
False
Иначе говоря, регулярное выражение 'department$' можно охарактеризовать как "искать department в конце строки". Чтобы знак $ трактовался как часть искомого выражения, его следует экранировать:
PowerShell
1
2
PS C:\> $s -match 'department\$'
True
Ну, и Ваш пример в данном случае тогда нужно переправить на нечто вроде:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
$arr = @(
  "group1, department1, contoso, com",
  "group2, department2, contoso, com",
  "supergroup, department$, contoso, com"
)
 
$arr | % {$b = 'department'}{
  if (([Regex]"(?i)$b[\d+|\$]").Match($_).Success) {
    # некий код
  }
}
1
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 2
24.12.2015, 17:48  [ТС]
Спасибо большое! Все получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2015, 17:48
Помогаю со студенческими работами здесь

Использование регулярных выражений
Доброе утро, подскажите пожалуйста, совсем запуталась. У меня есть модуль, нужно, чтобы внутри процедуры Заполнить выполнялись процедуры...

Использование регулярных выражений
Добрый День! Имеется строка в виде <Symbol>GRX/SPB</Symbol> <ContractPosition>-100</ContractPosition>...

Использование регулярных выражений
Перемещено из Поиск в массиве топик-стартер наверно имел ввиду поиск строки в текстовом файле. как один из вариантов это поиск...

Использование регулярных выражений в case
case "$Keypress" in ) echo "буква в нижнем регистре";; ) echo "Буква в верхнем регистре";; ) echo...

Строки и использование регулярных выражений
дан массив из n чисел. значения массива ввести в виде строки чисел, разделенных пробелами. проверить вводимую строку на корректность с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru