Войти

Показать полную графическую версию : [решено] Продвинутая замена текста


vk_k14m@vk
12-06-2019, 00:06
Доброго времени суток. Нужна помощь с очисткой большого количества объемных текстовых файлов от кодов мешающих читать текст.

Пример таких кодов
@texton
@interlude_start
@r
[wrap text="It"]It [wrap text="was"]was [wrap text="a"]a [wrap text="thrust"]thrust [wrap text="like"]like [wrap text="lightning."]lightning.[l][r]
[wrap text="A"]A [wrap text="spearhead"]spearhead [wrap text="thrust"]thrust [wrap text="to"]to [wrap text="pierce"]pierce [wrap text="my"]my [wrap text="heart."]heart.[l][r]
[wrap text="Trying"]Trying [wrap text="to"]to [wrap text="dodge"]dodge [wrap text="it"]it [wrap text="would"]would [wrap text="be"]be [wrap text="useless."]useless.[l][r]
[wrap text="Being"]Being [wrap text="lightning,"]lightning, [wrap text="it's"]it's [wrap text="invisible"]invisible [wrap text="to"]to [wrap text="the"]the [wrap text="human"]human [wrap text="eye."]eye.[l][r]
@textoff
@se file=se085 nowait=true
@blackout rule=右から左へ vague=64 time=200
@se file=se088 nowait=true
@quakeT time=1200 vmax=15 hmax=30
Как вы наверно догадались, я о кодах [wrap text=""]. У этих кодов есть понятная закономерность, в скобках отображается тот же текст, что и после закрытия квадратной скобки до первого пробела или другой квадратной скобки.
[wrap text="It"]It
[wrap text="was"]was
[wrap text="a"]a
и т.д.

И вот мне нужен способ удаления этих кодов вместе с тем что находится в скобках. В результате должно получится нечто такое
@texton
@interlude_start
@r
It was a thrust like lightning.[l][r]
A spearhead thrust to pierce my heart.[l][r]
Trying to dodge it would be useless.[l][r]
Being lightning, it’s invisible to the human eye.[l][r]
@textoff
@se file=se085 nowait=true
@blackout rule=右から左へ vague=64 time=200
@se file=se088 nowait=true
@quakeT time=1200 vmax=15 hmax=30

Не подскажите как бы это можно было б сделать?

З.Ы. Если есть более подходящий раздел для этого вопроса, не затруднитесь подсказать...

a_axe
12-06-2019, 01:06
У этих кодов есть понятная закономерность, в скобках отображается тот же текст, что и после закрытия квадратной скобки до первого пробела или другой квадратной скобки. »
Если удалить нужно все, что находится между знаками "[" и "]", то как один из вариантов содержимое можно скопировать в Word, тогда задача решается поиском и заменой по строке "[^0091]*[^0093]" без кавычек с опцией "подстановочные знаки", но при этом будет удален весь текст между скобками, в том числе [l][r].

Если задача удалить только то, что дублируется после квадратных скобок - вероятно нужно писать скрипт.

Добавлено:
Если в каждом выражении обязательно присутствует текст "[wrap text=", то поиск можно сузить запросом:
[^0091]wrap text="*"[^0093]

Iska
12-06-2019, 01:15
Ну, например, на PowerShell:
$oRegExp = New-Object -TypeName 'System.Text.RegularExpressions.Regex' -ArgumentList '\[wrap text=\".*?\"\]'


Get-ChildItem -Path 'C:\Мои проекты\0264\*.txt' |`
ForEach-Object -Process {
$sContent = Get-Content -Path $_.FullName -Raw -Encoding 'Unicode'
Write-Host $_.FullName -NoNewline

if($oRegExp.IsMatch($sContent)) {
$sContent = $oRegExp.Replace($sContent, '')
Rename-Item -Path $_.FullName -NewName "$($_.BaseName).bak"
Set-Content -Path $_.FullName -Value $sContent -Encoding 'Unicode'

Write-Host "`tOk"
} else {
Write-Host "`tPattern not found"
}
}

Задайте Ваши пути, расширения файлов и правильную кодировку.




© OSzone.net 2001-2012