Как написать это Regex - PullRequest
       2

Как написать это Regex

0 голосов
/ 27 августа 2010

HTML:

<dt>
    <a href="#profile-experience" >Past</a>
</dt>
<dd>
    <ul class="past">
        <li>
            President, CEO &amp; Founder <span class="at">at</span> China Connection
        </li>
        <li>
            Professional Speaker and Trainer <span class="at">at</span> Edgemont Enterprises
        </li>
        <li>
            Nurse &amp; Clinic Manager <span class="at">at</span> <span>USAF</span>
        </li>
    </ul>
</dd>​​​​​

Я хочу соответствовать узлу <li>.Я пишу регулярное выражение:

<dt>.+?Past+?</dt>\s+?<dd>\s+?<ul class=""past"">\s+?(?:<li>\s*?([\W\w]+?)+?\s*?</li>)+\s+?</ul>

На самом деле они не работают.

Ответы [ 6 ]

2 голосов
/ 27 августа 2010

Не использовать регулярные выражения для разбора HTML ...

2 голосов
/ 27 августа 2010

Нет, не анализируйте HTML с помощью регулярных выражений, как будто это просто большая куча текста.Использование синтаксического анализатора DOM является правильным способом.

1 голос
/ 27 августа 2010

Какой язык вы используете?

Если вы используете Python, вы должны попробовать lxml: http://lxml.de. С помощью lxml вы можете искать узел с тегом ul и классом "past". Затем вы извлекаете его дочерние элементы, которые li , и получаете текст этих узлов.

1 голос
/ 27 августа 2010

Не используйте регулярное выражение для соответствия HTML-документа. Лучше проанализировать его как дерево DOM, используя вместо этого простой конечный автомат.

Я предполагаю, что вы пытаетесь получить элементы списка HTML. Поскольку вы не указываете, какой язык вы используете, вот вам небольшой псевдокод:

Псевдокод:

while (iterating through the text)

    if (<li> matched)

        find position to </li>
        put the substring between <li> to </li> to a variable

Конечно, существует множество сторонних библиотек, которые делают подобные вещи. В зависимости от среды разработки у вас может быть функция, которая уже делает это (например, javascript).

0 голосов
/ 27 августа 2010

Если вы пытаетесь извлечь или манипулировать этим селектором HTML, xPath, xsl или CSS в jQuery, это может быть проще и проще в обслуживании, чем регулярное выражение.Какова ваша цель и в каких рамках вы работаете?

0 голосов
/ 27 августа 2010

пожалуйста, научитесь использовать jQuery для такого рода вещей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...