{{DISPLAYTITLE:_INSTRREV}}
The [[_INSTRREV]] function searches for a substring inside another string, but unlike [[INSTR]] it searches from right to left.


{{PageSyntax}}
: {{Parameter|position%}} = [[_INSTRREV]]([{{Parameter|start%}},] {{Parameter|baseString$}}, {{Parameter|subString$}})


{{PageParameters}}
* The optional literal or variable [[INTEGER]] {{Parameter|start%}} indicates where in the {{Parameter|baseString$}} the search must start, counted from the left. 
* The {{Parameter|baseString$}} is a literal or variable [[STRING]] value to be searched for an exact match including [[UCASE$|letter cases]]. 
* The {{Parameter|subString$}} is a literal or variable [[STRING]] value being searched.


{{PageDescription}}
* The function returns the {{Parameter|position%}} in the {{Parameter|baseString$}} where the {{Parameter|subString$}} was found, from right to left.
* {{Parameter|position%}} will be 0 if the search found no matches in the base string.
* [[_INSTRREV]] returns 0 if an empty {{Parameter|baseString$}} is passed, and returns [[LEN]]({{Parameter|baseString$}}) with an empty {{Parameter|subString$}}.
* The {{Parameter|start%}} position is useful when making multiple searches in the same string. See the example below.
* The {{Parameter|subString$}} should be smaller or equal in [[LEN|length]] to the {{Parameter|baseString$}}, or 0 is returned.
* A {{Parameter|start%}} value of 0 or less starts search from the end of the {{Parameter|baseString$}} (same as not passing a {{Parameter|start%}} parameter).


{{PageExamples}}
''Example 1:'' Separating a file name from a full path.
{{CodeStart}}
fullPath$ = "C:\Documents and Settings\Administrator\Desktop\qb64\internal\c\libqb\os\win\libqb_1_2_000000000000.o"
file$ = {{Cl|MID$}}(fullPath$, {{Cl|_INSTRREV}}(fullPath$, "\") + 1)
{{Cl|PRINT}} file$
{{CodeEnd}}
{{OutputStart}}
libqb_1_2_000000000000.o
{{OutputEnd}}


''Example 2:'' Searching for multiple instances of a substring inside a base string, going from the end to the start.
{{CodeStart}}
sentence$ = " This is a string full of spaces, including at start and end... "
{{Cl|PRINT}} sentence$
{{Cl|DO}}
    findPrevSpace% = {{Cl|_INSTRREV}}(findPrevSpace% - 1, sentence$, {{Cl|SPACE$}}(1))
    {{Cl|IF}} findPrevSpace% = 0 {{Cl|THEN}}
        {{Cl|LOCATE}} 4, 1
        {{Cl|PRINT}} "No more spaces"
        {{Cl|EXIT}} {{Cl|DO}}
    {{Cl|END IF}}

    {{Cl|LOCATE}} 2, findPrevSpace%
    {{Cl|PRINT}} "^"
    totalSpaces = totalSpaces + 1

    {{Cl|IF}} findPrevSpace% = 1 {{Cl|THEN}} 
        {{Cl|LOCATE}} 4, 1
        {{Cl|PRINT}} "Last space found at position 1"
        {{Cl|EXIT}} {{Cl|DO}}
    {{Cl|END IF}}
{{Cl|LOOP}}
{{Cl|PRINT}} "Total spaces found: "; totalSpaces
{{CodeEnd}}
{{OutputStart}}
 This is a string full of spaces, including at start and end... 
^    ^  ^ ^      ^    ^  ^       ^         ^  ^     ^   ^      ^

Last space found at position 1
Total spaces found: 13
{{OutputEnd}}

{{PageSeeAlso}}
* [[MID$]], [[INSTR]]
* [[SPACE$]]


{{PageNavigation}}
