none
PowerShell: начинаем использовать регулярные выражения. RRS feed

  • Вопрос

  • Здравствуйте!

    Начинаю изучать Powershell и использовать его для своих целей. Не могу реализовать проверку строки с помощью регулярного выражения. Уверен, что для знатоков это мелочь.

    Необходимо написать регулярное выражение, которое будет отвечать True на строки "install" и "uninstall", но отвечать False на "reinstall".

    "install" -match "?Regex?" ---> True

    "uninstall" -match "?Regex?" ---> True

    "reinstall" -match "?Regex?" ---> False

    Т.е. в регулярном выражении необходимо указать лишь набор слов, которые под него подходят. В моём случае это "install" и "uninstall".

    Какое регулярное выражение необходимо указать вместо ?Regex?


    • Изменено stakado 25 марта 2015 г. 6:22
    25 марта 2015 г. 6:21

Ответы

Все ответы

  • Добрый день.

    Вот здесь подробно и с примерами -- https://technet.microsoft.com/en-us/magazine/2007.11.powershell.aspx


    Печенкин Николай

    • Предложено в качестве ответа lokise 25 марта 2015 г. 6:26
    25 марта 2015 г. 6:26
  • PS > "install" -match "^(un)?install$"
    True
    PS > "uninstall" -match "^(un)?install$"
    True
    PS > "reinstall" -match "^(un)?install$"
    False

    • Предложено в качестве ответа lokise 25 марта 2015 г. 7:01
    • Помечено в качестве ответа stakado 25 марта 2015 г. 7:03
    25 марта 2015 г. 6:32
    Отвечающий
  • Мануал, указанный Вами я уже смотрел. Но вот сообразить, что поставленную мной задачу можно перефразировать как:

    (un)? - 0 или более включений словосочетания un и install - само слово инсталл. И символы начала/конца строки.

    не смог. Спасибо за решение, в конкретно данной ситуации оно мне поможет. Но для дальнейшего развития хочу сформулировать ещё одну задачу (опишу кодом PoSh):

    "cat" -match "?Regex?" ---> True

    "dog" -match "?Regex?" ---> True

    "bee" -match "?Regex?" ---> False

    Т.е. я хочу в регулярном выражении указать именно перечень слов, на которые -match будет отвечать True. В указанном примере - это слова cat и dog.

    25 марта 2015 г. 6:58
  • -match "^(dog|cat)$"
    • Помечено в качестве ответа stakado 25 марта 2015 г. 7:03
    25 марта 2015 г. 7:00
    Отвечающий
  • Я вот что-то про группу не вкурил мануал - оформление двух слов в скобках это ж и есть группа?

    Теперь усё ясно, благодарю.

    25 марта 2015 г. 7:04
  • Я вот что-то про группу не вкурил мануал - оформление двух слов в скобках это ж и есть группа?

    Теперь усё ясно, благодарю.


    https://xaegr.wordpress.com/2009/11/20/regexp-1-intro/ - 4 глава будет описание про группы, но лучше начать с первой.
    25 марта 2015 г. 7:22
    Отвечающий