none
Как заставить Powershell видеть русский текст в UTF-8 файле ? RRS feed

  • Вопрос

  • Есть текстовый файл в UTF-8, есть работающий скрипт для его разбора:

    PowerShellВыделить код
    1
    2
    3
    4
    5
    
    $file="Z:\20190319_235153.txt"
     
    $regex = "^\w+\s4744\s(\d\d\.\d\d.\d\d\d\d)\s\d\d\:\d\d"
     
    select-string -Path $file -Pattern $regex -Encoding 'UTF8' | foreach {$_.Matches.Groups[1].Value}
    Но когда пытаюсь в regex написать русский текст,
    PowerShellВыделить код
    1
    2
    3
    4
    5
    
    $file="Z:\20190319_235153.txt"
     
    #$regex = "^Карта\s4744\s(\d\d\.\d\d.\d\d\d\d)\s\d\d\:\d\d\sПокупка\w(\d+)\.(\d+)\wRUB"
     
    select-string -Path $file -Pattern $regex -Encoding 'UTF8' | foreach {$_.Matches.Groups[1].Value}
    то он ни фига не находит. Как мне заставить Powershell понимать русский текст?
    • Изменено Senglory 6 сентября 2019 г. 10:38
    5 сентября 2019 г. 18:54

Ответы

  • Точно, там опечатка была - вместо \s я использовал \w. Теперь все заработало.
    5 сентября 2019 г. 21:51
  • Это была копипаста. В реальном примере, разумеется, раскомментирован.
    проверяйте патерн. как видно по скрину выше все прекрасно работает с кирилицей в regexpe и кодировкой в файле

    The opinion expressed by me is not an official position of Microsoft

    • Предложено в качестве ответа Vector BCOModerator 6 сентября 2019 г. 4:39
    • Помечено в качестве ответа Vector BCOModerator 7 сентября 2019 г. 9:36
    5 сентября 2019 г. 21:07
    Модератор

Все ответы

  • Сам файл скрипта в какой кодировке? Если распечатать выражение то оно правильно показывается? Искейпить через \u пробовали?

    This posting is provided "AS IS" with no warranties, and confers no rights.

    5 сентября 2019 г. 19:13
    Модератор
  • Сам скрипт тоже UTF-8. Искейпить не пробовал, хочу без этого изврата обойтись.
    5 сентября 2019 г. 19:53
  • Сам скрипт тоже UTF-8. Искейпить не пробовал, хочу без этого изврата обойтись.

    странно это, при наличии \d\d\d\d

    ЧЯДНТ?

    PS Проблема не может быть связана с тем что во втором примере регекс закомментирован?


    The opinion expressed by me is not an official position of Microsoft

    5 сентября 2019 г. 20:08
    Модератор
  • Это была копипаста. В реальном примере, разумеется, раскомментирован. Винда  - Win 10x64 Home Edition English
    • Изменено Senglory 5 сентября 2019 г. 21:05
    5 сентября 2019 г. 21:04
  • Это была копипаста. В реальном примере, разумеется, раскомментирован.
    проверяйте патерн. как видно по скрину выше все прекрасно работает с кирилицей в regexpe и кодировкой в файле

    The opinion expressed by me is not an official position of Microsoft

    • Предложено в качестве ответа Vector BCOModerator 6 сентября 2019 г. 4:39
    • Помечено в качестве ответа Vector BCOModerator 7 сентября 2019 г. 9:36
    5 сентября 2019 г. 21:07
    Модератор
  • Точно, там опечатка была - вместо \s я использовал \w. Теперь все заработало.
    5 сентября 2019 г. 21:51