Выделите символы между звёздочками, используя регулярное выражение.

Вопрос или проблема

У меня есть следующее предложение:
Мне нужно выделить/подчеркнуть символы между **, как показано в образце текста ниже:

Мой образец текста:
**Использует:** Используйте нарезанные грибы в **крабах, пирожках, роллах с лобстером или жареных овощах**.

Желаемый результат:
**Использует:** Используйте нарезанные грибы в **крабах, пирожках, роллах с лобстером или жареных овощах**.

Код, который я написал: (?<=\*\*)(.+?)(?=\*\*)

Этот код делает все слова жирным. Что я упустил?

Я использую Adobe InDesign, который использует Boost-версию regex. Большинство кодов, написанных в Notepad++, работает в InDesign.

Я бы не стал использовать look around для такой задачи.

  • Найти: \*\*(.+?)\*\*
  • Заменить: <bold>$1</bold>

Замените <bold> на то, что InDesign использует для жирного шрифта.

Попробуйте этот регулярное выражение:

(?<=[\s]\*\*)(.+?)(?=\*\*[\s|\.])

Предполагается, что слова, которые нужно выделить, непосредственно следуют за или предшествуют звёздочкам. Вам возможно потребуется добавить другие символы (запятые, точки с запятой и т. д.) между квадратными скобками.

Ответ или решение

Для того чтобы выделить (жирным шрифтом) символы между двумя звездочками (**) с помощью регулярных выражений в Adobe InDesign, необходимо корректно составить выражение и заменить найденный текст на нужный формат.

Проблема и ее решение

Вы привели код регулярного выражения (?<=\*\*)(.+?)(?=\*\*), который использует "позитивные просмотр вперёд" и "позитивные просмотр назад". Однако, это выражение не выполняет замену всего строкового содержания между звёздочками, а только находит текст, который потом нужно корректно обернуть в тег.

Давайте разберём, как правильно сформулировать решение:

  1. Регулярное выражение для поиска:
    Сначала нужно определить правильное регулярное выражение, которое будет находить желаемые участки текста:

    \*\*(.+?)\*\*

    Это выражение находит текст, заключённый между двумя парами звёздочек. Здесь (.+?) используется для захвата текста между звёздочками.

  2. Шаблон замены:
    Для замены найденного текста на форматированный текст используйте следующий шаблон:

    <strong>$1</strong>

    Где $1 указывает на захваченный текст между звездочками.

Пример использования

В вашем случае, вы можете использовать следующее:

  • Найти:
    \*\*(.+?)\*\*
  • Заменить на:
    <strong>$1</strong>

Это преобразует ваш текст:

**Uses:** Use shredded mushrooms in **crab, cakes, lobster rolls, or stir-fries**.

в

<strong>Uses:</strong> Use shredded mushrooms in <strong>crab, cakes, lobster rolls, or stir-fries</strong>.

Замечания и рекомендации

  1. Проверка специального контекста: Учтите, что в случае использования дополнительных знаков препинания (например, запятой или точки) рядом со звездочками, текущий шаблон будет также работать. Если необходимо исключить некоторые символы, регулировка может быть добавлена к регулярному выражению.

  2. Тестирование в Adobe InDesign: После изменения регулярного выражения и использования правильного шаблона замены, протестируйте его в Adobe InDesign, чтобы убедиться, что все элементы форматирования работают корректно.

  3. Обратная совместимость: Помните, что некоторые регулярные выражения могут по-разному интерпретироваться в разных средах, поэтому всегда полезно протестировать ваши выражения в целевом программном обеспечении.

Следуя этим указаниям, вы сможете успешно выделить текст между звездочками в нужном формате.

Оцените материал
Добавить комментарий

Капча загружается...