Регулярное выражение отдельных групп перед строкой специальных символов - PullRequest
0 голосов
/ 15 февраля 2019
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
This PM was sent by [ helloworld ] hellworld@gmail.com,
Membership Status : YES
http://gg.com.zz/US?id=gg@1

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
Title           : Testing is testing
Quantity        : 44
Price           : 55.00
Item Location   : United States

*******************************************************************


I want this message right here, hello there, you help is deeply 
**
appreciated :)

  *** This email was sent using gg.gg.com ***

Выше моей выходной строки, я хочу получить группы между длинным ^^^^^^- и ****** делителем,

Конечный результат будет:

This PM was sent by [ helloworld ] hellworld@gmail.com,
Membership Status : YES
http://gg.com.zz/US?id=gg@1
Title           : Testing is testing
Quantity        : 44
Price           : 55.00
Item Location   : United States
I want this message right here, hello there, you help is deeply 
**^
appreciated :)

Я попробовал (?<=^)[^\^]*|[^\^-]*(?<=\*\*), но просто не смог найти общий длинный ^^^^^^^ делитель, кто-нибудь может мне помочь с этим?

1 Ответ

0 голосов
/ 15 февраля 2019

Вы можете использовать это регулярное выражение для захвата предполагаемых данных,

(?s)^(?:\^+-|\*{3,})\s*(.+?)(?=\s*(?:\^+|\*{3,}))

Объяснение:

  • (?s) - позволяет . соответствоватьсимвол новой строки, который требуется здесь в качестве данных для захвата, охватывает несколько строк
  • ^ - соответствует началу текста
  • (?:\^+-|\*{3,})\s* - соответствует одному или нескольким ^ символам, заканчивающимся на- или три (почему три, поэтому последняя строка не совпадает, так как имеет 2 звезды) или более * символов, за которыми следует дополнительный пробел
  • (.+?) - сопоставляет предполагаемый текст и записывает его впервый шаблон группировки
  • (?=\s*(?:\^+|\*{3,})) - смотрите вперед, чтобы убедиться, что он прекращает захват данных, за которым следует необязательный пробел и шаблон выше, например ^^^^^- или *****

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

Демо

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