Question: ```
var str = "=IIF(IsNothing(Fields!Metadata1.Value),"N/A",Fields!Metadata1.Value)";
var regexp = new Regex(@"Fields!(\w+)");
var matches = regexp.Matches(str);

```

The matches will have "Fields!Metadata1"
while I need to get "Metadata1"

What shall I change?

Answer: 
don't know c# syntax, for regex, try:

```
(?<=Fields!)\w*

```

**EDIT** add short explanation:

`(?<=foo)bar` matches `bar` only if `bar` is following `foo` (foo is not gonna in match result) `(?<=..)` is positive look behind, zero-width assertion. google it for details.
maybe you can try this...

var match = Regex.Match(item, @"!(\w+)");

then get the match.Groups[1].Value