Regular expression to parse guid and other attributes
TL;DR; list of adjustments:


.NET RegEx support named capture groups. make use of them.
Make use of the GUID format specification.
Simplify retrieval with non-capturing groups.
Make assumptions explicit in character classes. Prefer negated chargroups to non-greedy matching


I propose the following regular expression instead:

(?&lt;guid&gt;[a-f0-9]{8}(?:\-[a-f0-9]{4}){3}\-[a-f0-9]{12})\/(?&lt;type&gt;[^\/]+)\/(?&lt;name&gt;[^;]+);version=(?&lt;version&gt;\d*)


While this regex is somewhat longer it matches both examples in 62 steps (as opposed to 117). This may only seem like a minor improvement, but it's not all that happens:

This regex uses named capturing groups that allow a much more natural and clear pattern extraction. Instead of accessing groups by magic indices, you can access them by name and the construction of matchEntity is accomplished as follows:

let matchEntity (m: Match) =
    { id= m.Groups.["guid"].Value; 
      eType = m.Groups.["type"].Value;
      name= m.Groups.["name"].Value; 
      version = m.Groups.["version"].Value }


Last but not least this regex also does not match incorrect GUID specifications