Я пытаюсь создать регулярное выражение (ruby), которое проверяет наличие нескольких условий. Я использую это регулярное выражение для замены содержимого моего объекта. Мое регулярное выражение близко к завершению, за исключением двух проблем, с которыми я сталкиваюсь в отношении уценки.Regex Markdown Header
Во-первых, заголовки дают мне проблемы. Например, я не хочу заменить слово «Привет» на «Привет», если «Привет» находится в заголовке.
Hi John <== # should not change
==================
Текст: Привет, как ты? < == # Должно быть: Привет, как дела? после подстановки
Или:
#### Hi Peter <== # should not change
Текст: Привет, как ты? < == # Должно быть: Привет, как дела? после подстановки
Вопрос: Как я могу избежать уценки заголовки внутри моего регулярного выражения? Я пробовал негативные взгляды и взгляды, но безуспешно.
Моя вторая проблема должна быть довольно простой, но как-то я борюсь. Если слова Italic «привет« Я хочу их найти и заменить, не меняя подчеркивания. Я могу найти слово с этим регулярным выражением:
\b[_]*hi[_]*\b
Вопрос 2: Но если бы я заменить его, я бы также изменить подчеркивание. Есть ли способ определить только само слово и заменить его, сохраняя при этом границы слов?
Пример кода
@website.autolinks.all.each do |autolink|
autolink.name #for example returns "Iphone5"
autolink.url #for example returns "http://www.apple.com"
regex = /\b(?<!##\s)(?<![\d.\[])([_]*)#{autolink.name}([_]*)(?![\d'"<\/a>])\b/
if @permalink.blog_entry.content.match(regex)
@permalink.blog_entry.content.gsub!(regex, "[#{autolink.name}](# {autolink.url})")
end
end
Пример текста
Iphone5
==============
iPhone5 это лучший мобильный телефон есть, даже если люди на Samsung, вероятно, думают, или, возможно, только надеяться, что их Samsung Galaxy S3 лучше.
#### Samsung Galaxy S3?
Да, это название нового Samsung телефона.
Это приведет к тексту с тегами HTML, но когда я использую свое регулярное выражение, в моем контенте используется синтаксис Markdown (используемый до конвертера меток).
есть что-то в заголовке вообще, что вы хотите изменить? – VladL
Нет, я хочу только заменить определенные слова в тексте ссылками. Заголовки должны оставаться нетронутыми. Я попытался добавить (?
Отправляете ли вы этот документ в HTML - если да, то как насчет поиска и замены в HTML? Вы можете легко запустить его на всех элементах абзаца, что исключает заголовки. –