Здесь есть недоразумение.
Обратная косая черта используется для определения специального символа в Регулярном выражении , например, \t
определяет вкладку.
Но это не такдля PowerShell.Чтобы определить специальный символ в PowerShell, вам нужно использовать символ обратного удара (см .: О специальных символах ), например, вкладка записывается как `t
.
Другими словами, шаблон регулярного выражения в вопросе является правильным, но входная строка не является ( в отличие от того, что предлагает вопрос / заголовок, на самом деле специального символа * нет1013 * в данной входной строке").
оно должно быть:
"...hs9sn329hs`t" -match '\n|\r|\t|\a|\"|\`'
True
Что касается списка одиночных (специальных) символов, вы также можете рассмотреть выражение в скобках (скореечем OR
символ "pipe") для этого:
"...hs9sn329hs`t" -match '[\n\r\t\a\"\`]'
True
Наоборот: допускается использование специальных символов в шаблоне регулярного выражения с использованием двойных кавычек , чтобы PowerShell оценил строку (но я рекомендую против этого):
"...hs9sn329hs`t" -match "`n|`r|`t|`a|`"|``"
True
Если входная строка в вопросе действительно является строкой, которую вы хотите проверить (подразумевая, что вы ссылаетесь на обратную косую чертув качестве специального символа (формально это не так), вы хотите проверить наличие \t
вместо tab,. Для этого вам нужно будет экранировать обратную косую черту в вашем регулярном выражении до lитерально соответствует \t
:
"...hs9sn329hs\t" -match '\\n|\\r|\\t|\\a|\\"|\\`'
True