ルックアラウンド アサーションを使用してこれを行うことができます。
(?<!-)\bin\b
in
が前に付いていない場合にのみ一致し-
ます。
-in\b
一致し-in
ます。
単語境界アンカーにより、誤ってbins
、into
またはに一致しないことが保証されますgain
。
解決:
Sub TestRegExSubstition()
Dim searchDictionary As New List(Of KeyValuePair(Of String, String))
searchDictionary.Add(New KeyValuePair(Of String, String)("in", "8888"))
searchDictionary.Add(New KeyValuePair(Of String, String)("-in", "9999"))
Dim sentenceArray = {"in-in",
"in Parvin-e",
"Parvin-in",
"in in-e",
"Parvin injā-in"}
For i = 0 To UBound(sentenceArray)
Dim input As String = sentenceArray(i)
For Each kvp In searchDictionary
Dim regex As Regex = New Regex("(?<!-)\b" + kvp.Key + "\b")
input = regex.Replace(input, kvp.Value)
Next
Console.WriteLine(input)
Next
Console.ReadLine()
End Sub