Description
Based on your sample text, there are known delimiters between your groups, so you could simply use a lookahead to validate delimiter like in the following expression this would prevent the shorter prefix from completing the match.
Regex: (^|[+-]\s)(alpha|alpha\ beta)(?=\s[+-]|$)
Replace with: $1~~~new value~~~
Example
Input text
alpha beta + gamma delta - epsilon phi
alpha + alpha beta + gamma delta - epsilon phi
Sample Code
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim sourcestring as String = "replace with your source string"
Dim replacementstring as String = "$1~~~new value~~~"
Dim matchpattern as String = "(^|[+-]\s)(alpha|alpha\ beta)(?=\s[+-]|$)"
Console.Writeline(regex.Replace(sourcestring,matchpattern,replacementstring,RegexOptions.IgnoreCase OR RegexOptions.Multiline))
End Sub
End Module
Input After Replacement
~~~new value~~~ + gamma delta - epsilon phi
~~~new value~~~ + ~~~new value~~~ + gamma delta - epsilon phi