#c# #regex #powershell
#c# #регулярное выражение #powershell
Вопрос:
$pattern = 'trigger(. ?)(r|n|rn){2}'
Write-Host "PATTERN $pattern"
Write-Host ("- trigger: blah`n blah`n blah blah`n`n not blah" -replace $pattern, "trigger: none")
Вывод должен быть «- trigger: none not blah»
Комментарии:
1. Это регулярное выражение не соответствует вашей входной строке, смотрите Здесь . Насколько я вижу, ваш ввод не содержит новой строки, но регулярное выражение вызывает ее (даже если этот шаблон выглядит немного странно). Попробуйте использовать
trigger(. ?)[rn]*
.2. почему вы помечаете C # для powershell-вопроса?
Ответ №1:
Есть две проблемы:
.
соответствует всему, кроме новых строк, используйте флаг inline(?s)
или модифицированную точку[Ss]
- r n — это разрыв строки Windows и
n
* unix; поэтому лучше сделатьr
необязательным?
:(r?n)
$pattern = 'trigger([sS] ?)(r?n){2}'
Write-Host "PATTERN $pattern"
Write-Host ("- trigger: blah`n blah`n blah blah`n`n not blah" -replace $pattern, "trigger: none")
- trigger: none not blah