Question: I've found a lot of examples of how to **check** something using regex, or how to split text using regular expressions.

But how can I extract words out of a string ?

Example:

```
aaaa 12312 <asdad> 12334 </asdad>

```

Lets say I have something like this, and I want to extract all the numbers [0-9]\* and put them in a list.

Or if I have 2 different kind of elements:

```
aaaa 1234 ...... 1234 ::::: asgsgd

```

And I want to `choose digits that come after .....` and `words that come after ::::::`

Can I extract these strings in a single regex ?

Answer: 
**For your specific examples:**

```
    string firstString = "aaaa 12312 <asdad> 12334 </asdad>";
    Regex firstRegex = new Regex(@"(?<Digits>[\d]+)", RegexOptions.ExplicitCapture);
    if (firstRegex.IsMatch(firstString))
    {
        MatchCollection firstMatches = firstRegex.Matches(firstString);
        foreach (Match match in firstMatches)
        {
            Console.WriteLine("Digits: " + match.Groups["Digits"].Value);
        }
    }

    string secondString = "aaaa 1234 ...... 1234 ::::: asgsgd";
    Regex secondRegex = new Regex(@"([\.]+\s(?<Digits>[\d]+))|([\:]+\s(?<Words>[a-zA-Z]+))", RegexOptions.ExplicitCapture);
    if (secondRegex.IsMatch(secondString))
    {
        MatchCollection secondMatches = secondRegex.Matches(secondString);
        foreach (Match match in secondMatches)
        {
            if (match.Groups["Digits"].Success)
            {
                Console.WriteLine("Digits: " + match.Groups["Digits"].Value);
            }
            if (match.Groups["Words"].Success)
            {
                Console.WriteLine("Words: " + match.Groups["Words"].Value);
            }
        }
    }

```

Hope that helps. The output is:

```
Digits: 12312
Digits: 12334
Digits: 1234
Words: asgsgd

```
```
Regex itemsRegex = new Regex(@"(\d*)");
MatchCollection matches = itemsRegex.Matches(text);

int[] values = matches.Cast<Match>().Select(m => Convert.ToInt32(m.Value)).ToArray();

```