Захват повторяющихся групп в 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