У меня есть входная строка, которая выглядит примерно так:Как повторить группу захвата?
HLI6Ch60000Ch500C0Ch46400Ch30000Ch21888Ch10E79CS07LCU3Ch37880Ch27800Ch16480CS8CA00000000000000000000
Теперь я не заботиться о той части, которая следует за последнюю букву A
, она всегда будет A
и ровно 20 числа, которые не имеют никакого используйте для меня. Я, однако, необходимо часть до последней буквы A
, а в идеале, мне нужно бы его разделить на два различных захватах, так же, как это:
1: HLI6Ch60000Ch500C0Ch46400Ch30000Ch21888Ch10E79CS07
2: LCU3Ch37880Ch27800Ch16480CS8C
Единственный способ определить эти матчи является то, что они заканчиваются символами CS
, за которыми следуют два шестнадцатеричных символа. Я думал, что регулярное выражение, как (.+?CS.{2})+
(или (.+?CS[[:xdigit:]]{2})+
) будет делать эту работу, но когда попробовал на www.regex101.com, он только фиксирует последнюю группу и дает следующее предупреждение:
Примечания: Повторный захват группа только захват последняя итерация. Поместите группу захвата вокруг повторяющейся группы, чтобы захватить все итерации или использовать не захват группу вместо того, чтобы, если вы не заинтересованы в данных
Что я думал, что говорит о том, что я должен использовать регулярные выражения, как ((.+?CS.{2})+)
вместо этого и я имею в виду - Конечно, теперь я получаю два захватывает, но они выглядят следующим образом:
1: HLI6Ch60000Ch500C0Ch46400Ch30000Ch21888Ch10E79CS07LCU3Ch37880Ch27800Ch16480CS8C
2: LCU3Ch37880Ch27800Ch16480CS8C
Значение первый из них ... немного больше, чем хотелось бы, чтобы это было. Если это помогает в любом случае, я должен указать, что окончательное регулярное выражение будет частью приложения iOS, поэтому будет использоваться экземпляр класса NSRegularExpression
- не уверен, что это полезная информация вообще, просто я знаю, что NSRegularExpression
не поддерживает каждую часть мира регулярных выражений.
Просто используйте это: (.?. + CS {2}) (.?. + CS {2}) '', https://regex101.com/r/zD4cO2/1 – streetturtle