Регулярное выражение для поиска некоторых слов - PullRequest
0 голосов
/ 15 апреля 2019
Full Text = "........ -B D:\ABC -C ........."

Я хочу получить D:\ABC между -B и -C.

Как я могу получить слова, используя регулярные выражения?

Ответы [ 3 ]

2 голосов
/ 15 апреля 2019

Вы можете использовать следующий образец:

if ($string -cmatch '\s-B\s*(.+?)\s*-C\s'){$sub = $matches[1]}

Гипотеза : между -B и -C нет -C и только один -B и один -C в правильном порядке

2 голосов
/ 15 апреля 2019

Вы можете использовать шаблон с lookarounds (?<=-B)\s*(\S*)\s*(?=-C)

Объяснение:

(?<=-B) - положительный взгляд сзади, чтобы утверждать, что предшествующее значение - -B

\s* - ноль или более пробельных символов

(\S*) - ноль или более непробельных символов, сохраненных в группе захвата - это строка, которую вы хотите получить

(?=-C) - позитивный взгляд, утверждающий, что то, что после, является -C

Демо

0 голосов
/ 15 апреля 2019

при условии, что верно следующее ...

  • только ОДИН -B
  • , за которым следует только требуемый текст
  • , за которым следует только ОДИН -C

... тогда эта отта работа >> '^.+ -B (.+) -C .+$' << </p>

что она делает ...

  • начало строки
  • один или несколько символов
  • пробел, дефис, B, пробел
  • группа захвата для всего после этого и до следующего шаблона
  • пробел, дефис, C,пробел
  • один или несколько символов
  • конец строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...