«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как захватить повторяющиеся группы в регулярных выражениях Go?

Как захватить повторяющиеся группы в регулярных выражениях Go?

Опубликовано 2 ноября 2024 г.
Просматривать:683

How to Capture Repeating Groups in Go Regular Expressions?

Захват повторяющихся групп в GO

При попытке проанализировать строки, соответствующие определенному формату, например слова в верхнем регистре, за которыми следует ноль или более двойных чисел Аргументы, заключенные в кавычки, необходимо определить регулярное выражение, которое фиксирует нужные элементы. В предоставленном сценарии попытка перехватить повторяющиеся аргументы с помощью следующего регулярного выражения:

re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )")*`)

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

re1, _ := regexp.Compile(`([A-Z] )|(?: "([^"] )")`)

Это измененное регулярное выражение соответствует либо слову в верхнем регистре, либо строке в двойных кавычках без захвата окружающих кавычек. Этот подход позволяет лучше фиксировать повторяющиеся аргументы, как показано в следующем фрагменте кода:

results := re1.FindAllStringSubmatch(`COMMAND "arg1" "arg2" "arg3"`, -1)

fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
    fmt.Println("Arg:", arg[2])
}

Этот пересмотренный подход успешно фиксирует команду и три ее аргумента и печатает их отдельно.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3