Как найти последний абзац

I have a list of several paragraph tags. Each is without any attributes e.g.

<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>

My goal is to find the last opening <p> tag – no matter if I only have a single paragraph or ten. I always want the last paragraph opening tag.

With

/<p>/

I get the first paragraph tag. I thought $ inverts the search direction from left-to-right to right-to-left. So basically

/<p>$/

should return the opening paragraph tag for the third paragraph from my example above; but the regex finds nothing at all.

So how to best target the last paragraph?

J0e3gan's user avatar

J0e3gan

8,70010 gold badges53 silver badges80 bronze badges

asked Jan 18, 2015 at 22:04

rkoller's user avatar

3

$ does not change the search direction, it simply matches at the end of the text, that’s all.

If you want to find the last <p>, you have to use a negative lookahead to assert there aren’t any more occurences of <p>:

(?s)<p>(?!.*<p>)

answered Jan 18, 2015 at 22:12

Aran-Fey's user avatar

Aran-FeyAran-Fey

38.8k11 gold badges103 silver badges148 bronze badges

use this pattern

[sS]*K(<p>)

Demo

answered Jan 18, 2015 at 22:50

alpha bravo's user avatar

alpha bravoalpha bravo

7,8081 gold badge18 silver badges23 bronze badges

0

This should work:

preg_match_all('#<p>.*</p>#',$string,$results);
$last_paragraph = array_pop($results[0]);

answered Jan 18, 2015 at 22:13

theglossy1's user avatar

theglossy1theglossy1

5433 silver badges13 bronze badges

$str = <<<MYFILE
<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>
MYFILE;
$matches = array();
$pattern = '/.*?(<p>(.*)</p>)$/';
preg_match($pattern,$str,$matches);

var_dump($matches);

answered Jan 18, 2015 at 22:39

Alex's user avatar

AlexAlex

16.7k1 gold badge28 silver badges51 bronze badges

Try something like this:

(<p>)([^<]*)</p>$

Regular expression visualization

Debuggex Demo

Here is a PHP demo to test the pattern with the sample input you provided…

<?php 

$test = <<<TEST
<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>
TEST;

preg_match('/<p>([^<]*)</p>$/', $test, $matches);

var_dump($matches);

?>

…, which outputs:

array(3) {
  [0]=>
  string(22) "<p>Third paragraph</p>"
  [1]=>
  string(3) "<p>"
  [2]=>
  string(15) "Third paragraph"
}

You can run the PHP demo on Ideone too.

As you can see, the pattern matches the last paragraph element. I just added parentheses for capture groups to give you the option of getting the last paragraph element itself or its opening tag or its text.

answered Jan 18, 2015 at 22:14

J0e3gan's user avatar

J0e3ganJ0e3gan

8,70010 gold badges53 silver badges80 bronze badges

A DOM Method with XPath

$doc = new DOMDocument();
$doc->loadHTML("<p>First paragraph</p><p>Second paragraph</p><p>Third paragraph</p>");

$xpath = new DOMXpath($doc);
if($elements = $xpath->query("//p[last()]"))
{
  echo $elements->item(0)->nodeName; // p
  echo $elements->item(0)->nodeValue; // Third paragraph
}

If you had a more complex HTML structure you would have to start getting explicit with your XPath Query however.

answered Jan 18, 2015 at 23:49

Scuzzy's user avatar

ScuzzyScuzzy

12.1k1 gold badge46 silver badges46 bronze badges

Все категории

  • Фотография и видеосъемка
  • Знания
  • Другое
  • Гороскопы, магия, гадания
  • Общество и политика
  • Образование
  • Путешествия и туризм
  • Искусство и культура
  • Города и страны
  • Строительство и ремонт
  • Работа и карьера
  • Спорт
  • Стиль и красота
  • Юридическая консультация
  • Компьютеры и интернет
  • Товары и услуги
  • Темы для взрослых
  • Семья и дом
  • Животные и растения
  • Еда и кулинария
  • Здоровье и медицина
  • Авто и мото
  • Бизнес и финансы
  • Философия, непознанное
  • Досуг и развлечения
  • Знакомства, любовь, отношения
  • Наука и техника


0

Как в Ворде быстро найти нужный абзац?

Есть большой текст в Ворде и из него нужен только абзац. Если я знаю фразу из абзаца нужного, реально не перечитывать все?

2 ответа:



1



0

Обычная комбинация ctrl+F, которая используется для поиска на конкретной странице. В хорошем Ворде эта комбинация запускает процесс «навигации». Просто вводим слова из фразы, пока не появится нужное место в окошке «навигации» и на экране.



1



0

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

Итак, чтобы найти искомый абзац, необходимо сделать несколько шагов.

  1. Заходим в наш документ Word, где находится текст с нужным абзацем.
  2. Вспоминаем наше слово или фразу из абзаца.
  3. В Word’е есть функция, позволяющая искать необходимые слова в тексте, выделяя их цветов (обычно желтым). Она включается комбинацией клавиш «Ctrl + F». Жмём эту комбинацию и наш курсор переносится в левую колонку текста. Вводите туда ваше слово или фразу (если это фраза, то она должна быть в точности правильной, чтобы Word её нашел. как по мне, лучше и легче использовать поиск слово, особенно, когда не уверен в точности фразы). Я набрал слово «поиск». ![фото ворда]
  4. Заранее у меня в документе Word’а было написано это слово. Воспользовавшись вышеперечисленными действиями, Word нашёл это слово и выделил его жёлтым цветом. Если у вас большой текст и вам нужно найти слово или фразу из абзаца, чтобы найти сам абзац, Word также найдёт его, как в моём случае.

    фото ворда

1

Читайте также

В разных версиях предварительный просмотр расположен в разных меню:

  • файл/печать/предва­<wbr />рительный просмотр
  • кнопка MS Office/ далее печать/предварител­<wbr />ьный просмотр

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

Весь текст в Windows выделяется единым приемом и это работает не только в MS Word, но и в Google Chrome, и во множестве других приложений.

Единственное, что нужно при этом четко отслеживать — где установлен фокус!!! То есть, если вы кликнули мышкой на адресную строку, то по сочетанию клавиш Ctrl+A, где A — латынь (или ENG), будет выделена вся адреснуя строка, если вы кликнули мышкой по основному тексту окна — будет выделено все его содержимое (включая рисунки).

Итак, пробуйте — Ctrl+A

Во-первых, выделив фрагмент списка, можно изменить его уровень:

Уровень списка

Во-вторых, обратить внимание на ползунки горизонтальной на линейке:

Отступы списка

В-третьих, обратить внимание на параметры абзаца выделенного текста:

Параметры абзаца

Кроме того, рядом с кнопкой библиотеки нумерации (рис.1) есть кнопки увеличения и уменьшения отступов списка.

Общепринятый стандарт для написания текстов в графическом редакторе Word, его же можно считать и оптимальным такой: шрифт Times New Roman (Таймс новый прямой переводится с английского), размер шрифта — 14, междустрочный интервал — 1.5. Поля страницы в миллиметрах: сверху и снизу — по 20 мм., слева — 30 мм., справа — 15 мм. Эти размеры предусмотрены государственным стандартом ГОСТ Р53579-2009.

При написании «для себя» шрифт может быть любым, размер 12 или 14, а междустрочный интервал — 1 или 1,5.

Зайдите в колонтитлы (щелкните несколько раз по полю где видите номер страницы, либо найдите вкладку колонтитлы на панели инструментов) и удалите номер страницы, все в вашем документе больше нет номеров страниц. Успехов.

Вопрос:

У меня есть список нескольких тегов абзаца. Каждый из них без каких-либо атрибутов, например

<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>

Моя цель – найти последний открывающий <p> – независимо от того, есть ли у меня только один параграф или десять. Мне всегда нужен тег открытия последнего абзаца.

С

/<p>/

Я получаю первый абзац абзаца. Я думал, что $ инвертирует направление поиска слева направо на право налево. Итак, в основном

/<p>$/

должен вернуть тег абзаца открытия для третьего абзаца из моего примера выше; но регулярное выражение ничего не обнаруживает.

Итак, как лучше всего настроить последний абзац?

Лучший ответ:

$ не меняет направление поиска, оно просто совпадает в конце текста, что все.

Если вы хотите найти последний <p>, вы должны использовать отрицательный lookahead, чтобы утверждать, что не существует больше случаев <p>:

(?s)<p>(?!.*<p>)

Ответ №1

Ответ №2

Это должно работать:

preg_match_all('#<p>.*</p>#',$string,$results);
$last_paragraph = array_pop($results[0]);

Ответ №3

Попробуйте что-то вроде этого:

(<p>)([^<]*)</p>$

Regular expression visualization

Демоверсия Debuggex

Вот демо-версия PHP для тестирования шаблона с предоставленным вами образцом ввода…

<?php

$test = <<<TEST
<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>
TEST;

preg_match('/<p>([^<]*)</p>$/', $test, $matches);

var_dump($matches);

?>

…, который выводит:

array(3) {
[0]=>
string(22) "<p>Third paragraph</p>"
[1]=>
string(3) "<p>"
[2]=>
string(15) "Third paragraph"
}

Вы можете запустить демо-версию PHP на Ideone.

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

Ответ №4

$str = <<<MYFILE
<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>
MYFILE;
$matches = array();
$pattern = '/.*?(<p>(.*)</p>)$/';
preg_match($pattern,$str,$matches);

var_dump($matches);

Ответ №5

Метод DOM с XPath

$doc = new DOMDocument();
$doc->loadHTML("<p>First paragraph</p><p>Second paragraph</p><p>Third paragraph</p>");

$xpath = new DOMXpath($doc);
if($elements = $xpath->query("//p[last()]"))
{
echo $elements->item(0)->nodeName; // p
echo $elements->item(0)->nodeValue; // Third paragraph
}

Если бы у вас была более сложная структура HTML, вам пришлось бы начать получать явные данные с помощью запроса XPath.

Содержание

  • Как найти и заменить в Word только определенный текст?
  • Где найти абзацы в Word?
  • Как заменить абзацы в Word?
  • Как вы выравниваете абзацы в Word?
  • Как просмотреть разрывы строк в Word?
  • Что такое символ разрыва строки в Word?
  • Как добавить Enter в «Найти и заменить»?
  • Как найти и заменить разрывы строк в блокноте?
  • Как в Word заменить слова символами?
Во-первых, во-первых, во-вторых, в-третьих, в-третьих следующий, последний, наконец
кроме того, кроме того более того
также В заключение подведем итоги
Первое… В секунду

Метод 1. Использование функции «Найти и заменить» в выделенном фрагменте

Во-первых, выделите целевой текст. Во-вторых, нажмите «Ctrl + H» , чтобы открыть окно «Найти и заменить». Затем введите текст поиска в текстовое поле «Найти» и текст для замены в поле «Заменить на». Затем нажмите кнопку «Заменить все».

Где найти абзацы в Word?

На Вкладка «Главная» или на вкладке «Макет страницы» нажмите кнопку запуска диалогового окна «Абзац» в группе «Абзац».

Как заменить абзацы в Word?

Заменить строку, абзац, разрыв каретки в MS Word

  1. Откройте документ Word, над которым хотите работать.
  2. Нажмите CTRL + H, чтобы открыть окно «Найти и заменить».
  3. В поле «Найти» введите ^ p [этот символ стрелки вверх называется кареткой и обычно доступен на цифровой клавише]
  4. В поле «Заменить на» введите запятую.

Как вы выравниваете абзацы в Word?

В вашем документе выделите абзацы, которые хотите выровнять. Совет: Чтобы выделить фрагмент текста, удерживайте нажатой клавишу Shift и перемещайте курсор с помощью клавиш со стрелками. Чтобы отформатировать абзац, нажмите Option + Command+M. Откроется диалоговое окно «Абзац» с фокусом на вкладке «Отступы и интервалы».

Как просмотреть разрывы строк в Word?

Показать или скрыть знаки табуляции в Word

  1. Перейдите в Файл> Параметры> Показать.
  2. В разделе Всегда показывать эти метки форматирования на экране установите флажок для каждой метки форматирования, которую вы хотите отображать всегда, независимо от того, установлен ли параметр «Показать / скрыть». кнопка включена или выключена. Снимите все флажки для тех, которые вы не хотите постоянно отображать.

Что такое символ разрыва строки в Word?

Разрыв строки — это разрыв текущей строки текста, который не создает новый абзац и часто выполняется с помощью сочетания клавиш Shift + Enter. Изображение слева показывает, что разрыв строки напоминает символ стрелки, указывающей вниз и влево. Такой же символ находится на клавише Enter на многих компьютерных клавиатурах.

Как добавить Enter в «Найти и заменить»?

Как добавить разрыв строки для поиска и замены

  1. Нажмите CTRL-H, чтобы открыть диалоговое окно «Найти и заменить».
  2. Нажмите «Дополнительные параметры» (нижняя левая кнопка).
  3. Убедитесь, что «Регулярные выражения» отмечены / выбраны.
  4. Затем в поле «Искать» введите: | | * и в поле «Заменить на» введите: | | п *

Как найти и заменить разрывы строк в блокноте?

Как заменить символ на новую строку с помощью Notepad ++

  1. Откройте файл с помощью Notepad ++ (или вставьте текст в новый файл)
  2. Откройте меню Поиск -> Заменить.
  3. В поле «Найти» введите символ, который нужно преобразовать в новую строку.
  4. В поле «Заменить на» введите n.
  5. В разделе «Режим поиска» выберите «Расширенный».
  6. Нажмите «Заменить все».

Как в Word заменить слова символами?

Выберите экземпляр символа, которым вы хотите заменить текущий символ, и нажмите [Ctrl] C. Поместите курсор в текстовое поле «Заменить на:» и нажмите [Ctrl] V. Нажмите кнопку «Заменить все» и закройте диалоговое окно, когда все символы будут заменены.

Интересные материалы:

Где лучше всего продать мою золотую цепочку?
Где лучше всего работать разработчиком программного обеспечения?
Где лучше всего растут грибы?
Где лучше всего разместить радар-детектор?
Где лучше всего ставить музыку?
Где лучше всего увидеть каланов?
Где лучше всего взять Eridium Borderlands 2?
Где лучше всего загружать видео?
Где лучшее место для солнца в январе?
Где лучшее место для заземления?

Есть большой текст в Ворде и из него нужен только абзац. Если я знаю фразу из абзаца нужного, реально не перечитывать все?

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

Итак, чтобы найти искомый абзац, необходимо сделать несколько шагов.

  1. Заходим в наш документ Word, где находится текст с нужным абзацем.
  2. Вспоминаем наше слово или фразу из абзаца.
  3. В Word’е есть функция, позволяющая искать необходимые слова в тексте, выделяя их цветов (обычно желтым). Она включается комбинацией клавиш «Ctrl + F». Жмём эту комбинацию и наш курсор переносится в левую колонку текста. Вводите туда ваше слово или фразу (если это фраза, то она должна быть в точности правильной, чтобы Word её нашел. как по мне, лучше и легче использовать поиск слово, особенно, когда не уверен в точности фразы). Я набрал слово «поиск». ![фото ворда]
  4. Заранее у меня в документе Word’а было написано это слово. Воспользовавшись вышеперечисленными действиями, Word нашёл это слово и выделил его жёлтым цветом. Если у вас большой текст и вам нужно найти слово или фразу из абзаца, чтобы найти сам абзац, Word также найдёт его, как в моём случае.

    фото ворда

1

Обычная комбинация ctrl+F, которая используется для поиска на конкретной странице. В хорошем Ворде эта комбинация запускает процесс «навигации». Просто вводим слова из фразы, пока не появится нужное место в окошке «навигации» и на экране.

Знаете ответ?

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как составить струны
  • Как найти частную жалобу на сайте суда
  • Как правильно найти точки на ухе
  • Как найти удельную проводимость зная удельное сопротивление
  • Как найти площадь заштрихованной фигуры треугольник

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии