Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
Alexey107
0 / 0 / 0
Регистрация: 14.04.2017
Сообщений: 1
#1

Подавление мета-символов регулярных выражений в переменных - PowerShell

14.04.2017, 16:10. Просмотров 177. Ответов 0
Метки нет (Все метки)

Добрый день.

Есть PS скрипт, вычитывающий знаечение ключа реестра. Весь приводить не буду- не зачем.
В какой-то момент переменная $Val принимает такое значение:

write-host ("$val")
+$1(\d{6,15})$1E164n

Далее нужно получить True обратившись к этой переменной, а получаю False:
"$Val" -match '\(\\d\{6,15\}\)\$1E164'
False

Тестовая строка такого вида дает True:
'+$1(\d{6,15})$1E164n' -match '\(\\d\{6,15\}\)\$1E164'
True

Я догадываюсь, почему так. В тесте одинарные кавычки заставляют интерпретировать все символы как текст, а \ справа тоже экранируют подавляя мета-символы регвыражений, поэтому True.
Но как же заставить считать все символы в переменной текстом?

Добавлено через 4 часа 13 минут
Сорри за пост, разобрался.
В ключе реестра, который я читаю были два скоытых символа: `n - New line и `r - Carriage return.
`n я определил сразу и удалил- т.к с ним write-host выводил символы блоками в столбик.
А вот на наличие `r write-host не реагировал никак, отображая все в строку.
Пропалить наличие этого символа удалось только запросив вывод строки как массив, командо $Val[0..14]. Только тогда я увидил что там на самом деле есть пустые символы. Взяв список этих символов от сюда https://ss64.com/ps/syntax-esc.html
и поэксперементировав поочередно удаляя каждый командой -Replace я таки превратил это в нормальную строку к которой -match '\(\\d\{6,15\}\)\$1E164' стал давать требуемый результат.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2017, 16:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Подавление мета-символов регулярных выражений в переменных (PowerShell):

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

Синтаксис регулярных выражений
Уважаемые программисты! Такой вопрос! Есть такое выражение: ...

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

Поиск объявлений переменных с помощью регулярных выражений
Нужно создать обфускатор - программу шифрующую переменные. То-есть я ввожу...

Найти определения переменных в тексте с помощью регулярных выражений
Имеем richTextBox с текстом (любой код на c++/c#). Необходимо из него вытащить...

Поиск файла с использованием подстановочных символов и регулярных выражений
А не подскажите еще как правильно сгенерить имя файла для цикла for? строка с...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2017, 16:10
Привет! Вот еще темы с решениями:

PHP задача с использованием строк, регулярных выражений и символов
Дана строка состоящая из строк, разделенных символами, которые перечислены во 2...

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

Как посчитать число различных символов в строке с помощью регулярных выражений?
Как посчитать число различных символов в строке с помощью регулярных выражений?...

Удаление лишних символов (не являющихся буквами и пробелами) из строки при помощи регулярных выражений
Добрый день. Пытаюсь удалить лишние символы из строки (все, что не является...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru