Извлечь строку из многострочной строки

Я хочу извлечь содержимое между abc { и }.

$s = 'abc {
    123
}'
$s -match 'abc {(.*?)' # true
$s -match 'abc {(.*?)}' # false, expect true

Тем не менее, кажется, что это не соответствует многострочному совпадению?


person ca9163d9    schedule 03.01.2019    source источник


Ответы (1)


. будет соответствовать только символам новой строки, когда вы выполняете операцию регулярного выражения в режиме SingleLine.

Вы можете добавить параметр регулярного выражения в начале шаблона. с (?[optionflags]):

$s -match 'abc {(.*?)}'       # $False, `.` doesn't match on newline
$s -match '(?s)abc {(.*?)}'   # $True, (?s) makes `.` match on newline
person Mathias R. Jessen    schedule 03.01.2019