Как захватить содержание HTML-тэгов?

В дополнение к приведенным выше ответам в Python 3 мы можем просто создать list значений результата из map как

li = []
for x in map(chr,[66,53,0,94]):
    li.append(x)

print (li)
>>>['B', '5', '\x00', '^']

. Мы можем обобщить другой пример, где я был поражен , операции на карте также можно обрабатывать аналогичным образом, как в regex, мы можем написать функцию, чтобы получить list элементов для отображения и получить результат в одно и то же время. Ex.

b = 'Strings: 1,072, Another String: 474 '
li = []
for x in map(int,map(int, re.findall('\d+', b))):
    li.append(x)

print (li)
>>>[1, 72, 474]
6
задан Anant Singh---Alive to Die 5 June 2015 в 17:14
поделиться

3 ответа

Ну, sysrqb позволит Вам соответствовать чему-либо в первом абзаце, предполагающем, что в абзаце нет никакого другого HTML. Вы могли бы хотеть что-то больше как это

<p>.*?</p>

Размещение ? после Вашего * делает это нежадным, означая, что это будет только соответствовать такому же маленькому тексту по мере необходимости прежде, чем соответствовать </p>.

18
ответ дан 8 December 2019 в 04:32
поделиться

Если Вы используете preg_match, используйте флаг "U" для создания этого нежадным.

preg_match("/<p>(.*)<\/p>/U", $blog_post, &$matches);

$matches[1] будет затем содержать первый абзац.

6
ответ дан 8 December 2019 в 04:32
поделиться

Это, вероятно, было бы легче и быстрее для использования ремней для правки бритв () для нахождения положения первого

 <p>

и сначала

</p>

затем используйте substr () для извлечения абзаца.

 $paragraph_start = strpos($blog_post, '<p>');
 $paragraph_end = strpos($blog_post, '</p>', $paragraph_start);
 $paragraph = substr($blog_post, $paragraph_start + strlen('<p>'), $paragraph_end - $paragraph_start - strlen('<p>'));

Править: На самом деле regex в ответах других будет легче и быстрее..., Ваш большой комплекс regex в вопросе смутил меня...

1
ответ дан 8 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: