Недавно я хотел переключить свой генератор статических сайтов с Jekyll на Hugo. Мне очень нравится Hugo, но, к сожалению, использование некоторых функций меня часто раздражало.
рассмотрите код ниже,
{{ $my_var := `id = "demo"` }}
{{ $my_slice := (findRE `id=\"(.*)\"` $my_var 1) }}
{{ index $my_slice 0 }}
получить:
id = "demo"
ожидаемый результат
demo
В приведенном выше примере я хочу получить значение группы.
Обратите внимание, что на самом деле необходимо регулярное представление для получения группы, а не хитрое использование других функций (таких как replace для замены id = "
пробелом или что-то в этом роде)
сайт тестирования регулярных выражений: https://regex101.com/
Пожалуйста, помогите мне, я действительно потратил много времени на поиск, но все еще ничего. Я нашел кого-то с таким же вопросом в Hugo-discourse, но прошел год, а ответа до сих пор нет.
Проще всего это сделать с помощью replaceRE
, где $1
— номер вашей группы.
{{ $my_var := `id = "demo"` }}
{{ $result := replaceRE `id=\"(.*)\"` "$1" $my_var }}
{{ $result }} → "demo"
Спасибо @modInfo за вдохновение, решил расширить ответ replaceRE
{{ $my_var := `id = "demo"` }}
{{ $result := replaceRE `id=\"(.*)\"` "$1" $my_var }}
{{ $result }} → "demo"
{{ $my_var := `id = "demo2"` }}
{{ $result := replaceRE `id=\"(?P<my_id>.*)\"` "$my_id" $my_var }}
{{ $result }} → "demo2"
больше примеров
{{ $my_var := `<h2 id = "#demo+1-3%./2\"><a href = "https://www.google.com/"></a></h2>` }}
{{ $id := replaceRE `.*id=\"(?P<my_id>([:#a-z0-9+\-%./\\])*)\">(<a href=\"(?P<my_href>[:#a-z0-9+\-%./\\]*)\">.*)?` "$my_id" $my_var }}
{{ $id }} → #demo+1-3%./2\
{{ $href := replaceRE `.*id=\"(?P<my_id>([:#a-z0-9+\-%./\\])*)\">(<a href=\"(?P<my_href>[:#a-z0-9+\-%./\\]*)\">.*)?` "$my_href" $my_var }}
{{ $href }} → https://www.google.com/
Спасибо @modInfo, я решил выбрать вас как лучший ответ, хотя ваш ответ не распространяется, но без вашего вдохновения я бы не узнал больше, еще раз спасибо!