Timur Zhukov
Timur Zhukov

Reputation: 31

C++: Regex pattern

I got a regex pattern: (~[A-Z]){10,30} (Thanks to KekuSemau). And I need to edit it, so it will skip 1 letter. So it will be like down below.

Input:    CABBYCRDCEBFYGGHQIPJOK 
Output:    A B C D E F G H I J K

Upvotes: 0

Views: 87

Answers (2)

Muhammad Ashhar Hasan
Muhammad Ashhar Hasan

Reputation: 299

In regex only, there is no way you can achieve this directly. But you can do this in code:

Use following regex:

(.(?<pick>[A-Z]))+

and in code make a loop on "captures" of desired group, like in c#:

string value = "";
for (int i = 0; i < match.Groups["pick"].Captures.Count; i++)
{
   value = match.Groups["pick"].Captures[0].Value;
}

Upvotes: 0

xaxxon
xaxxon

Reputation: 19791

Just match two letters each iteration but only capture the second part.

(?:~[A-Z](~[A-Z])){5,15}

live: https://regex101.com/r/pIAxH8/1

I cut the repetition count (the bit inside the {}'s) by half since the new regex is matching two at a time.

The ?: in (?:...) bit disables capturing of the group.

Upvotes: 1

Related Questions