2015-11-25 5 views
0

У меня есть текстовый файл, который содержит много адресов и т. Д. Мне нужно знать, содержит ли этот текстовый файл адрес, который помещается в String -lets, называет его «$ address»). Для этого я помещаю .txt в переменную «$ list», а затем использую оператор -match, чтобы увидеть, содержит ли $ list $-адрес.Powershell: -match и p

if($list -Match $adress) { 
      $test = "CONTAINS" 
      $test 
} 

Проблема в том, что она вообще не работает. Похоже, он не справляется с «\ p», который является частью адреса. Предполагается ли что-то сделать? Я не знаю, как с этим бороться.

+0

Правильно спасся строка в '$ adress'? Возможно, покажите нам фактическое значение –

+0

O: \ folder \ public \ Data; 1030.95; 812.7; 79; 08/13/2013 13: 28: 49; 11/25/2015 02:02:28 Это линия текстовый файл. Адресом будет: O: \ folder \ public \ Data – Kikopu

+0

Да, вам нужно будет сбежать, иначе '\\' будет интерпретироваться как escape-последовательности регулярных выражений, а не фактические символы –

ответ

0

Оператор -match использует регулярные выражения. Это означает, что любая обратная косая черта, сопровождаемая символом, интерпретируется как escape-последовательность, а не буквальный символ.

Вы можете экранировать специальные символы (в том числе косой черты) в шаблоне с Regex.Escape() method:

if($list -match [regex]::Escape($adress)){ 
    "List contains at least one string matching $adress" 
}