Что нового

[Данные, строки] [RegExp]Вытащить текст в обратном порядке

lirikmel

Продвинутый
Сообщения
226
Репутация
84
Код:
        </a>

    </td>

</tr>



<tr>

    <td class="orderInfoCol1">

        <label class="iceOutLbl">

            Размещение заказа осуществляет

        </label>

    </td>

    <td class="orderInfoCol2">

        

            

                <span class="iceOutTxt">Уполномоченный орган</span>

                


                <a href="javascript:" 

				   onclick="openWindow('/public/action/organization/view?organizationId=643337','_blank', 900, 500);return false;"

				   class="iceCmdLnk">

                    ИНН 5610128360 КПП 561001001

                </a>

                


                <a href="javascript:" 

				   onclick="openWindow('/public/action/organization/view?organizationId=643337','_blank', 900, 500);return false;"

				   class="iceCmdLnk">

                    Министерство экономического развития, промышленной политики и торговли Оренбургской области

                </a>

            

            

            

            

        

    </td>

</tr>



<tr>

    <td class="orderInfoCol1">

        <label class="iceOutLbl">

            Заказчик

        </label>

    </td>

    <td class="orderInfoCol2">
Очень нужен примерчик как вытащить из этого кода , сочетание вида "Министерство экономического развития, промышленной политики и торговли Оренбургской области ИНН 5610128360 КПП 561001001" ....и если не сложно расшифровать параметры регулярного выражения которые будут использоваться ...а то я только начал пытаюсься вникнуть :-[
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Код:
$sHtml = ClipGet()
$sOut = StringRegExpReplace($sHtml, '(?si).*?class="iceCmdLnk">\s+(.+?)\s+<.*?class="iceCmdLnk">\s+(.+?)\s+<.*', '$2/$1')
ConsoleWrite($sOut & @CRLF)

"(?si)" - флаг для отключения чувствительности к регистру(i) и флаг (s), который будет съдать не только пробелы, но и символы новой строки.
.*? - любое количество любых символов с отключением жадности (необходимо для нормальной работы StringRegExpReplace - для него нужно описывать всю строку полностью)
class="iceCmdLnk"> - текст-зацепка
\s+(.+?)\s+< - хотя бы один пробел (его не захватываем), хотя бы один любой символ с отключенной жадностью (это захватываем - скобки), снова минимум один пробел и символ закрытия тэга <
дальше повтор для ссылки на учреждение...
$2/$1 - это формирование вывода, $1 ссылается на первую группу с захватом, а $2 на вторую. Знак между ними может быть любым или отсутствовать.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Redline,
А зачем здесь "(?i)"?
Код:
;#include <Array.au3>

$sText = FileRead(@ScriptDir & '\1.txt')

$aSearch = StringRegExp($sText, 'iceCmdLnk">\s+(.*?)\s+</a>', 3)
If @error Then Exit -3
;_ArrayDisplay($aSearch)
$sSearch = ''
For $i = UBound($aSearch) - 1 To 0 Step -1
	$sSearch &= $aSearch[$i] & @CRLF
Next
MsgBox(64, 'StringRegExp', StringTrimRight($sSearch, 2))

$sSearch_1 = StringRegExpReplace($sText, '(?s).*iceCmdLnk">\s+(.*?)\s+</a>.*iceCmdLnk">\s+(.*?)\s+</a>.*', '$2' & @CRLF & '$1')
If @extended <> 2 Then Exit -4
MsgBox(64, 'StringRegExpReplace', $sSearch_1)

$sSearch_2 = StringRegExpReplace($sText, '(?s).*iceCmdLnk">\s+(.*?)\s+</a>.*iceCmdLnk">\s+(.*?)\s+</a>.*', '$2')
If @extended <> 1 Then Exit -5
$sSearch_3 = StringRegExpReplace($sText, '(?s).*iceCmdLnk">\s+(.*?)\s+</a>.*iceCmdLnk">\s+(.*?)\s+</a>.*', '$1')
If @extended <> 1 Then Exit -6
MsgBox(64, 'StringRegExpReplace_1', '$sSearch_2: ' & $sSearch_2 & @LF & '$sSearch_3: ' & $sSearch_3)
 
Верх