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

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

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

Бил бил

Баба сдохла

Бил бил

Бил бил

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

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

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
Ответить

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

Ответить