Соответствие регулярному выражению PowerShell Y или Z

Согласно docs :

Измененная или параметр, значение которой никогда не изменяется после его инициализации, фактически является окончательным.

blockquote>

В принципе, если компилятор обнаруживает, что переменная не появляется в назначениях за пределами ее инициализации, то переменная считается эффектно окончательной .

Например, рассмотрим некоторый класс:

public class Foo {

    public void baz(int bar) {
        // While the next line is commented, bar is effectively final
        // and while it is uncommented, the assignment means it is not
        // effectively final.

        // bar = 2;
    }
}

3
задан mklement0 5 March 2019 в 17:56
поделиться

1 ответ

Чтобы предложить более краткую альтернативу с оператором -split , которая устраняет необходимость доступа к $Matches впоследствии для извлечения чисел:

PS> 'PC1-FOO1234568', 'PC2-FOO1234567/FOO98765' -split '(?:^PC\d+-|/)FOO' -ne ''
1234568  # single match from 1st input string
1234567  # first of 2 matches from 2nd input string
98765
[ 1129] Примечание: -split всегда возвращает массив [string[]], даже если возвращается только 1 строка; Строки результата из нескольких входных строк объединяются в один плоский массив.

  • ^PC\d+-|/ соответствует PC, за которым следуют 1 или более (+) цифр (\d) в начале строки (^) или (|) a / char., Который соответствует PC2-FOO в начале и /FOO.

    • (?:...), не захватывающее подвыражение , должно использоваться для предотвращения -split включения того, что подвыражение совпало в массиве результатов.
  • -ne '' отфильтровывает пустые элементы, которые являются результатом входных строк , начиная с с разделителя.


Чтобы узнать больше об операторе -split, основанном на регулярных выражениях, и о том, как он более мощный, чем метод .NET String.Split(), основанный на строковых литералах, см. ответ .

0
ответ дан mklement0 5 March 2019 в 17:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: