Я хочу извлечь несколько экземпляров альтернативного текста с помощью регулярных выражений, но не знаю, как

Я использовал это (?<=alt)[\w\s\,\/\(\)\.]* извлечь первый альтернативный текст. Это здорово, но есть несколько альтернативных текстов, которые я хотел бы извлечь. Я использую регулярное выражение внутри Visual Web Ripper

Код, из которого я извлекаю

<DIV id=ctl00_ContentRightColumn_CustomFunctionalityFieldControl1_ctl00_ctl00_woodFeatures class="woodFeaturesPanel woodFeaturesPanelSingle" sizcache="23614" sizset="0"><H2>Features:</H2>  <DIV sizcache="23614" sizset="0">  <UL sizcache="23614" sizset="0">  <LI sizcache="23386" sizset="0"><IMG alt="Information board at site" src="/PublishingImages/icon_infoboard.gif">  <LI sizcache="20558" sizset="0"><IMG alt="Parking nearby" src="/PublishingImages/icon_carparknear.gif">  <LI sizcache="23614" sizset="0"><IMG alt=Grassland src="/PublishingImages/icon_grassland.giF">  <LI sizcache="17694" sizset="0"><IMG alt="Is woodland creation site" src="/PublishingImages/icon_woodlandcreation.gif">  <LI sizcache="21680" sizset="0"><IMG alt="Mainly broadleaved woodland" src="/PublishingImages/icon_mainlybroadleaved.gif">  <LI sizcache="20704" sizset="0"><IMG alt="Mainly young woodland" src="/PublishingImages/icon_mainlyyoung.gif">  <LI>  <LI></LI></UL></DIV></DIV>

1 ответ

Решение

Без языка это сложно сказать, но используя шаблоны памяти, вы можете получить то, что вам нужно:

/alt=(\w\S*|"([^"]*)")/

С помощью preg_match_all() это дает следующие результаты:

Array
(
    [0] => Array
        (
            [0] => alt="Information board at site"
            [1] => alt="Parking nearby"
            [2] => alt=Grassland
            [3] => alt="Is woodland creation site"
            [4] => alt="Mainly broadleaved woodland"
            [5] => alt="Mainly young woodland"
        )

    [1] => Array
        (
            [0] => "Information board at site"
            [1] => "Parking nearby"
            [2] => Grassland
            [3] => "Is woodland creation site"
            [4] => "Mainly broadleaved woodland"
            [5] => "Mainly young woodland"
        )

    [2] => Array
        (
            [0] => Information board at site
            [1] => Parking nearby
            [2] =>
            [3] => Is woodland creation site
            [4] => Mainly broadleaved woodland
            [5] => Mainly young woodland
        )

)

Второй шаблон памяти предназначен для строк в двойных кавычках; если пусто, вы должны смотреть на первый шаблон памяти вместо этого.

Другие вопросы по тегам