Как разделить путь текста и изображения с помощью RegExp? - PullRequest
1 голос
/ 16 июня 2020

У меня есть следующие строки:

this was the url SERVER_UPLOAD_FILE_PATH____::5e2650c2-728c-40af-99a4eb100c432091.png____SERVER_UPLOAD_END click here to view details
SERVER_UPLOAD_FILE_PATH____::68d37b07-d694-47af-a16a-8adbe400ac67.png____SERVER_UPLOAD_END Hector where are you Hello world how are you
SERVER_UPLOAD_FILE_PATH____::ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png____SERVER_UPLOAD_END Execuse Me

Как разделить путь текста и изображения с помощью RegExp?

Это ожидаемый результат:

this was the url 
SERVER_UPLOAD_FILE_PATH____::5e2650c2-728c-40af-99a4eb100c432091.png____SERVER_UPLOAD_END
click here to view details

Ответы [ 2 ]

0 голосов
/ 24 июля 2020

Вы также можете разделить путь изображения и текст с помощью этого регулярного выражения:

/(.*?)(SERVER_UPLOAD_FILE_PATH.+?SERVER_UPLOAD_END)(.+)/

Это всегда будет возвращать вам три группы, первая из которых может быть пустой.

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

const a = ['this was the url SERVER_UPLOAD_FILE_PATH____::5e2650c2-728c-40af-99a4eb100c432091.png____SERVER_UPLOAD_END click here to view details',
    'SERVER_UPLOAD_FILE_PATH____::68d37b07-d694-47af-a16a-8adbe400ac67.png____SERVER_UPLOAD_END Hector where are you Hello world how are you',
    'SERVER_UPLOAD_FILE_PATH____::ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png____SERVER_UPLOAD_END Execuse Me'];

const regex = /(.*?)(SERVER_UPLOAD_FILE_PATH.+?SERVER_UPLOAD_END)(.+)/;

a.forEach(s => {
    const match = s.match(regex);
    match.forEach((m, i) => console.log(i, m.trim()));
    console.log()
});

Группа с индексом 0 всегда является исходной строкой. Интересные группы начинаются с индекса 1.

0 голосов
/ 24 июля 2020

Используйте этот RegExp для сопоставления текста, который вам не нужен:

[^ ]{20,}

Он соответствует нежелательным строкам, потому что это единственные последовательности символов, которые продолжаются в минимум 20 символов без пробела.

[^ ] означает отсутствие пробела. {20,} означает повторение не менее 20 раз.

Затем .split() вся строка с использованием нежелательного текста в качестве разделителя.

[
  'this was the url SERVER_UPLOAD_FILE_PATH____::5e2650c2-728c-40af-99a4eb100c432091.png____SERVER_UPLOAD_END click here to view details',
  'SERVER_UPLOAD_FILE_PATH____::68d37b07-d694-47af-a16a-8adbe400ac67.png____SERVER_UPLOAD_END Hector where are you Hello world how are you',
  'SERVER_UPLOAD_FILE_PATH____::ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png____SERVER_UPLOAD_END Execuse Me'
].map(s => s.split(s.match(/[^ ]{20,}/)))
  .flat()
  .map(s => s.trim())
  .filter(Boolean)
  .forEach(s => console.log(s));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...