Вопрос или проблема
У меня есть следующее предложение:
Мне нужно выделить/подчеркнуть символы между **, как показано в образце текста ниже:
Мой образец текста:
**Использует:** Используйте нарезанные грибы в **крабах, пирожках, роллах с лобстером или жареных овощах**.
Желаемый результат:
**Использует:** Используйте нарезанные грибы в **крабах, пирожках, роллах с лобстером или жареных овощах**.
Код, который я написал: (?<=\*\*)(.+?)(?=\*\*)
Этот код делает все слова жирным. Что я упустил?
Я использую Adobe InDesign, который использует Boost-версию regex. Большинство кодов, написанных в Notepad++, работает в InDesign.
Я бы не стал использовать look around для такой задачи.
- Найти:
\*\*(.+?)\*\*
- Заменить:
<bold>$1</bold>
Замените <bold>
на то, что InDesign
использует для жирного шрифта.
Попробуйте этот регулярное выражение:
(?<=[\s]\*\*)(.+?)(?=\*\*[\s|\.])
Предполагается, что слова, которые нужно выделить, непосредственно следуют за или предшествуют звёздочкам. Вам возможно потребуется добавить другие символы (запятые, точки с запятой и т. д.) между квадратными скобками.
Ответ или решение
Для того чтобы выделить (жирным шрифтом) символы между двумя звездочками (**) с помощью регулярных выражений в Adobe InDesign, необходимо корректно составить выражение и заменить найденный текст на нужный формат.
Проблема и ее решение
Вы привели код регулярного выражения (?<=\*\*)(.+?)(?=\*\*)
, который использует "позитивные просмотр вперёд" и "позитивные просмотр назад". Однако, это выражение не выполняет замену всего строкового содержания между звёздочками, а только находит текст, который потом нужно корректно обернуть в тег.
Давайте разберём, как правильно сформулировать решение:
-
Регулярное выражение для поиска:
Сначала нужно определить правильное регулярное выражение, которое будет находить желаемые участки текста:\*\*(.+?)\*\*
Это выражение находит текст, заключённый между двумя парами звёздочек. Здесь
(.+?)
используется для захвата текста между звёздочками. -
Шаблон замены:
Для замены найденного текста на форматированный текст используйте следующий шаблон:<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>.
Замечания и рекомендации
-
Проверка специального контекста: Учтите, что в случае использования дополнительных знаков препинания (например, запятой или точки) рядом со звездочками, текущий шаблон будет также работать. Если необходимо исключить некоторые символы, регулировка может быть добавлена к регулярному выражению.
-
Тестирование в Adobe InDesign: После изменения регулярного выражения и использования правильного шаблона замены, протестируйте его в Adobe InDesign, чтобы убедиться, что все элементы форматирования работают корректно.
-
Обратная совместимость: Помните, что некоторые регулярные выражения могут по-разному интерпретироваться в разных средах, поэтому всегда полезно протестировать ваши выражения в целевом программном обеспечении.
Следуя этим указаниям, вы сможете успешно выделить текст между звездочками в нужном формате.