Solved. There was an interesting problem when my regex matched two of my find strings that were butted up against each other, like this:
&&. In this case when I used FindAll and looped through the results, after I replaced & then next match was corrupted, like this: 23 Name}&. th next insert threw an exception that inline was not part of the document, which is true, it was replaced.
I solved this problem my using find instead of find all, that way I'm not changing the document underneath. Code follows:
In case you are wondering, I'm converting my old rtf fils with my own brand of mergefield into the xam format.
Using reader As New StreamReader(fs)
Dim s As String = reader.ReadToEnd
Dim provider_rtf As New Telerik.Windows.Documents.FormatProviders.Rtf.RtfFormatProvider
editor.Document = provider_rtf.Import(s)
Dim search As New Telerik.Windows.Documents.TextSearch.DocumentTextSearch(editor.Document)
Dim foundText As Telerik.Windows.Documents.TextSearch.TextRange = search.Find("&\(.*\)|&\[.*?\]|&[0-9]*")
If foundText Is Nothing Then Exit Do
Dim sel As String = editor.Document.Selection.GetSelectedText
'todo: replace sel with correct merge field
Dim field As New Telerik.Windows.Documents.Model.MergeField
field.DisplayMode = Telerik.Windows.Documents.Model.FieldDisplayMode.Code
field.PropertyPath = "Name"
editor.Document.MailMergeDataSource.ItemsSource = EmployeeList