Что нового

Как сделать замену в файле повторяющихся элементов только в определенных местах?

Tapok

Новичок
Сообщения
204
Репутация
0
как средствами рег. выражений преобразовать несколько строк (файл)
Код:
<p><span ID="ACH-LINK" class="pic_ill/picture/Илл.9.1.1.Текст1^текст2^текст3.png_name_Илл.^9.1.1.^Текст1^текст2^текст3" title="">Илл. 9.1.1. </span> Текст1^текст2^текст3</p>
<p><span ID="ACH-LINK" class="pic_ill/picture/Илл.9.1.2.Текст4^текст5^текст6.png_name_Илл.^9.1.2.^Текст4^текст5^текст6" title="">Илл. 9.1.2. </span> Текст4^текст5^текст6</p>
к такому виду:
Код:
<p><span ID="ACH-LINK" class="pic_ill/picture/Илл.9.1.1.Текст1^текст2^текст3.png_name_Илл.^9.1.1.^Текст1^текст2^текст3" title="">Илл. 9.1.1. </span> Текст1 текст2 текст3</p>
<p><span ID="ACH-LINK" class="pic_ill/picture/Илл.9.1.2.Текст4^текст5^текст6.png_name_Илл.^9.1.2.^Текст4^текст5^текст6" title="">Илл. 9.1.2. </span> Текст4 текст5 текст6</p>
(убрать "^" только в названии иллюстрации, а не в гиперссылке)

Можно ли как-то в том, что нашли:
Код:
(?<=</span>)(.+)(?=</p>)

заменить "^" на " "?
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Код:
;Можно использовать
StringReplace
; или
StringRegExpReplace
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Tapok
В вашей ситуации нецелесообразно использовать регулярные выражения.

Код:
$sHtml = _
 '<p><span ID="ACH-LINK" class="pic_ill/picture/Илл.9.1.1.Текст1^текст2^текст3.png_name_Илл.^9.1.1.^Текст1^текст2^текст3" title="">Илл. 9.1.1. </span> Текст1^текст2^текст3</p>' _
&'<p><span ID="ACH-LINK" class="pic_ill/picture/Илл.9.1.2.Текст4^текст5^текст6.png_name_Илл.^9.1.2.^Текст4^текст5^текст6" title="">Илл. 9.1.2. </span> Текст4^текст5^текст6</p>'

$oHtml = ObjCreate('HTMLFILE')
$oHtml.Open
$oHtml.Write($sHtml)
$oHtml.Close

$oTagName = $oHtml.getElementsByTagName("P")
; До...
ConsoleWrite(StringFormat('>>> До...'))
For $oItem In $oTagName
	ConsoleWrite(StringFormat('%s', $oItem.outerHTML))
Next
ConsoleWrite(StringFormat('\n'))

; После...
ConsoleWrite(StringFormat('>>> После...'))
For $oItem In $oTagName
	$oTextNode = $oHtml.createTextNode(StringReplace($oItem.lastChild.toString, '^', Chr(32)))
	$oItem.replaceChild($oTextNode, $oItem.childNodes(1))
	ConsoleWrite(StringFormat('%s', $oItem.outerHTML))
Next
ConsoleWrite(StringFormat('\n'))
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
Garrett, большое спасибо, работает! Буду разбираться с кодом.
 
Верх