- Сообщения
- 8,673
- Репутация
- 2,486
Имеем строку:
Нужно получить следующее:
Т.е нужно заменить в строке такое совпадение:
на это:
если ещё точнее, то нужно убрать идущие подряд одинаковые стили, в этом случае стиль S13 повторяется два раза, поэтому один стиль нужно удалить.
Могут встречаться и такие стили:
и тогда добавленный пробел должен учитываться при удалении, он должен попасть между двумя символами:
Я пробовал по всякому, вот примерно так:
но оно не полностью заменяет :(.
Есть идеи у кого?
Код:
<span class="S5">If</span> <span class="S13">(</span><span class="S9">$iYears</span> <span class="S13">></span><span class="S13">=</span> <span class="S3">20</span> <span class="S5">And</span> <span class="S4">StringRight</span><span class="S13">(</span><span class="S9">$iYears</span><span class="S13">,</span> <span class="S3">1</span><span class="S13">)</span> <span class="S13">=</span><span class="S13">=</span> <span class="S3">2</span><span class="S13">)</span> <span class="S5">Or</span> <span class="S13">(</span><span class="S9">$iYears</span> <span class="S13"><</span>
Нужно получить следующее:
Код:
<span class="S5">If</span> <span class="S13">(</span><span class="S9">$iYears</span> <span class="S13">>=</span> <span class="S3">20</span> <span class="S5">And</span> <span class="S4">StringRight</span><span class="S13">(</span><span class="S9">$iYears</span><span class="S13">,</span> <span class="S3">1</span><span class="S13">) ==</span> <span class="S3">2</span><span class="S13">)</span> <span class="S5">Or</span> <span class="S13">(</span><span class="S9">$iYears</span> <span class="S13"><</span>
Т.е нужно заменить в строке такое совпадение:
Код:
<span class="S13">></span><span class="S13">=</span>
на это:
Код:
<span class="S13">>=</span>
Могут встречаться и такие стили:
Код:
<span class="S13">></span> <span class="S13">=</span>
и тогда добавленный пробел должен учитываться при удалении, он должен попасть между двумя символами:
Код:
<span class="S13">> =</span>
Я пробовал по всякому, вот примерно так:
Код:
$vTest = StringRegExpReplace($sLine, '(?si)<span class="S(\d+)">([^(?:</?span)]*)</span><span class="S\1">(.*?)</span>', '<span class="S\1">\2\3\4</span>')
но оно не полностью заменяет :(.
Есть идеи у кого?