Вопрос ойтишникам

Существует ли не строгое тестирование и на сколько оно удобно если таковое имеется. Допустим у меня в файле есть строка которая может находится между двумя другими строками. Ну типа...

Дед бабу бил бил

Бил бил

Баба сдохла

Бил бил

Бил бил

Приехали менты

Строка баба сдохла должна быть между дед бабу бил и приехали менты. Где конкретно не важно. На сколько удобно такое тестирование делать?

27 комментариев

Regexp:
/Дед бабу бил ((.|\n)*)Баба сдохла((.|\n)*)Приехали менты/gm
Протестировать можешь тут: https://regex101.com/

5

Регекспы я в курсе есть. Если оч много таких регекспов нужно есть чего нибудь?

- "Дед бабу бил бил"

- "Бил бил"

- "Баба сдохла"

- "Бил бил"

- "Бил бил"

- "Приехали менты"

4

$txt = "Дед бабу бил бил`nБил бил`nБаба сдохла`nБил бил`nОтдыхаем`nБил бил`nПриехали менты"
$beat = "Бил бил"
$kill = "Баба сдохла"

$tabl = $txt -split '\n'

for ($i = 0; $i -lt $tabl.Count; $i++) {
if ($Tabl[$i] -eq $beat) {
$beatIndex = $i
}}

for ($i = 0; $i -lt $tabl.Count; $i++) {
if ($Tabl[$i] -eq $kill) {
$killIndex = $i
}}

$i = 0
$tablN = New-Object System.Data.DataTable
$tablN.Columns.Add() | Out-Null
ForEach ($item in $tabl){
if ($i -ne $killIndex){
$tablN.Rows.Add($item) | Out-Null
}
if($i -eq $beatIndex){
$tablN.Rows.Add($tabl[$killIndex]) | Out-Null
}
$i++
}

2

И в строку если надо
$rowValues = $tabln.Rows | ForEach-Object {
$_.ItemArray | ForEach-Object {
if ($_ -is [System.ComponentModel.MarshalByValueComponent]) {
$_.ToString()
} else {
$_
}
}
}

$resultString = $rowValues -join "\n"

1

решение из головы
ищем подстроки все три
сравниваем чтобы индексы найденных шли по возрастанию
профит

1

А если баба сдохла но не сразу. Строка тест должна пройти