Как найти указываемое подмножество в рамках указываемого множества с помощью регулярного выражения
https://regex101.com/r/FxYgQ7/2
- Регулярка:
(<p\s.*?>)(.*?\.)(<\/p>) - Вход:
<p class="c01">String1.String2.String3.</p> - Выход:
<p class="c01">String1. <span>...</span> String2. <span>...</span> String3. <span>...</span> </p>
- Регулярка:
Во 2-й группе регулярки (.*?\.) должно на мой взгляд находится собственно "волшебство". Чтобы ST3 не находил как сейчас полностью String1.String2.String3., а выходил с каждым нажатием F3 поочередно на String1. –> String2. –> String3.
Попробую еще сократить
- Входные данные:
<p>lorem ipsum. dolor sit. amet sed.</p> - Регэксп:
\.\s - Выходные данные будут добавляться между предложениями:
<p>lorem ipsum. # dolor sit. # amet sed. #</p>. - ВОПРОС: Как сделать, чтобы поиск не покидал содержимого тегов
<p>,</p>(или других заданных) ?- ИЛИ, переиначиваю: КАК добавить символ (#, например) после каждой точки в предложении. НО только в пределах тегов
<p>,</p>?
- ИЛИ, переиначиваю: КАК добавить символ (#, например) после каждой точки в предложении. НО только в пределах тегов
Ответы (2 шт):
Можно попробовать такой вариант, здесь мы допускаем всевозможные символы, кроме открывающегося тега:
(<p\s.*?>)([^<]*?\.)(<\/p>)
А если нужно, чтобы регулярное выражение выделяло все символы, включая и другие теги внутри p, то на вашем примере работает такое вырежение:
(<p\s.*?>)(.*?)(<\/p>)
По идее, основное ограничение на p-теги у вас уже есть. А вам нужно было убрать точку с конца во второй группе.
Вы можете использовать
(?s)(?:\G(?!\A)|<p>)(?:(?!<p>).)*?\K\.(?=.*?</p>)
См. пример использования регулярного выражения.
Подробности
(?s)- симол точки теперь также находит переносы строки(?:\G(?!\A)|<p>)-<p>или конец предыдущего удачного совпадения(?:(?!<p>).)*?- любой символ, 0 и более повторов, но как можно меньше, который не является первым символом последовательности символов<p>\K- оператор, удаляющий весь текст из буфера текущего совпадения\.- символ.(?=.*?</p>)- блок просмотра вперёд, который требует наличия подстроки</p>после 0 и более любых символов (как можно меньше).

