Разделение строк в Windows PowerShell - PullRequest
1 голос
/ 09 октября 2019

Не могли бы вы помочь мне получить желаемый вывод, где SIT - это среда, а тип файла - свойства, мне нужно удалить среду и расширение строки.

#$string="<ENV>.<can have multiple period>.properties
*$string ="SIT.com.local.test.stack.properties"
$b=$string.split('.')
$b[0].Substring(1)*

Требуемый вывод: com.local.test.stack // может иметь несколько периодов

Ответы [ 4 ]

1 голос
/ 09 октября 2019

Это должно сделать.

$string = "SIT.com.local.test.stack.properties"

# capture anything up to the first period, and in between first and last period
if($string -match '^(.+?)\.(.+)\.properties$') {
    $environment = $Matches[1]
    $properties = $Matches[2]

    # ... 
}
1 голос
/ 09 октября 2019

Вы можете использовать -match для захвата желаемого результата, используя регулярное выражение

$string ="SIT.com.local.test.stack.properties"
$string -match "^.*?\.(.+)\.[^.]+$"
$Matches.1
1 голос
/ 09 октября 2019

Вы также можете сделать это с помощью оператора Split .

($string -split "\.",2)[1]

Объяснение:

Вы разбили на литерал .символ с регулярным выражением \.. Синтаксис ,2 указывает PowerShell возвращать 2 подстроки после разделения. Индекс [1] выбирает второй элемент возвращаемого массива. [0] является первой подстрокой (SIT в данном случае).

1 голос
/ 09 октября 2019

Вы можете использовать

$string -replace '^[^.]+\.|\.[^.]+$'

Это удалит первые 1+ символов, кроме точки, а затем точку, и последнюю точку, за которой следуют любые 1+ не точечные символы.

См. Демонстрационный пример регулярных выражений и график регулярных выражений :

enter image description here

Подробности

  • ^ - начало строки
  • [^.]+ - 1+ символов, отличных от .
  • \. - точка
  • | - или
  • \. - точка
  • [^.]+ - 1+ символов, отличных от .
  • $ - конецстрока.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...