Mit RegularExpressions geht das ganz gut. Ich bin mir nur nicht sicher, ob ich mit den ReplaceString()-Zeilen alles abgedeckt habe, was als Sonderzeichen bei RegularExpressions vorkommen kann.
Code: Alles auswählen
Procedure FindStringEx(String.s, StringToFind.s, StartPosition.i = 1, Mode.i = #PB_String_CaseSensitive)
Protected flag.i = 0, pos.i
If Mode <> #PB_String_CaseSensitive
flag = #PB_RegularExpression_NoCase
EndIf
StringToFind = ReplaceString(StringToFind, "\", "\\")
StringToFind = ReplaceString(StringToFind, ".", "\.")
StringToFind = ReplaceString(StringToFind, "[", "\[")
StringToFind = ReplaceString(StringToFind, "]", "\]")
StringToFind = ReplaceString(StringToFind, "(", "\(")
StringToFind = ReplaceString(StringToFind, ")", "\)")
StringToFind = ReplaceString(StringToFind, "^", "\^")
StringToFind = ReplaceString(StringToFind, "$", "\$")
Protected re.i = CreateRegularExpression(#PB_Any, StringToFind + "\s|" + StringToFind + "$", #PB_RegularExpression_MultiLine | #PB_RegularExpression_AnyNewLine | flag)
If ExamineRegularExpression(re, String)
While NextRegularExpressionMatch(re)
pos = RegularExpressionMatchPosition(re)
If pos >= StartPosition
Break
EndIf
pos = 0
Wend
EndIf
FreeRegularExpression(re)
ProcedureReturn pos
EndProcedure
Debug FindStringEx("asdd K11 mit K.1 Versatz K1", "K.1", 1, #PB_String_CaseSensitive)