This is a purely academic exercise relating to regex and my understanding of grouping multiple patterns. I have the following example string

```
<xContext id="ABC">
<xData id="DEF">
<xData id="GHI">
<ID>JKL</ID>
<str>MNO</str>
<str>PQR</str>
<str>
<order id="STU">
<str>VWX</str>
</order>
<order id="YZA">
<str>BCD</str>
</order>
</str>
</xContext>

```

Using C# Regex I'm attempting to extract the groups of 3 capital letters.

At the moment if I use pattern `>.+?</` I get

```
Found 5 matches:
>JKL</
>MNO</
>PQR</
>VWX</
>BCD</

```

If I then use `id=".+?">` I get 

```
Found 5 matches:
id="ABC">
id="DEF">
id="GHI">
id="STU">
id="YZA">

```

Now I'm trying to combine them by using logic OR `|` for each term on both sides `id="|>.+?">|</`

However, this isn't giving me the combined results of both patterns

My questions are:

1. Can someone explain why this isn't working as expected?
2. How can I correct the pattern to get both results shown combined in correct order listed
3. How can I further enhance the combined pattern to just give letters only? I'm hoping it's still `?<=` and `?=<` but just want to check.

Thank you