There may be a way to do it with regex.
Another way would be to use the find() expression to find the first occurrence. Then use the mid() expression to get the text after that occurrence. Next use find() on that again to get the location of the second. Then you could rebuild the text around it.
Basically this. It's untested so there may be a few off by one issues.
Var text="Hi, Bill. My name is Bill."
Temp=mid(text, index+len("Bill"), len(text)-index-len("Bill"))
Text= left(text, index) & "bob" & mid(text, index+len("Bill"), len(text)-index-len("Bill"))