从特定点开始向后查找字符串中的字符串

Find String in String backwards, starting from specific point

我有一个文本,在这个文本中我搜索一个文件。我通过搜索其扩展名找到它,但不知道文件名。 当我找到这个字符串时,我有扩展名的索引 (indexof(".jpg"))

现在,我需要完整的文件名。我唯一知道的是文件名在“>”符号之后开始,但文件中有很多这样的符号。例如,有没有一种方法可以获取字符串中“>”的索引,从特定索引开始,然后向后移动?

试试这个正则表达式:

>([A-Za-z0-9-+. _]+[.]jpg)

或者更好:

>([^[\]\*\/\<>|]+[.]jpg)

我可能遗漏了一个允许的字符,但这涵盖了大部分内容并且应该很容易修改。使用这样的表达式:

Public Iterator Function FindJPGFileNames(inpupText As String) As IEnumerable(Of String)
     For Each match In RegEx.Matches(inputString, ">([^[\]\*\/\<>|]+[.]jpg)")
         Yield match.Groups(1).Value
     Next match
End Function

Public Function FindJPGFileNames(inpupText As String) As IEnumerable(Of String)
    Dim matches = RegEx.Matches(inputString, ">([^[\]\*\/\<>|]+[.]jpg)")
    Return matches.Select(Function(m) m.Groups(1).Value)
End Function

或者另外我还找到了这个解决方案:

Private Function searchimages(ByVal s As String, ByVal ending As String) As List(Of String)
    Dim los As New List(Of String)

    Dim position As Integer = 0
    While position <> -1
        position = s.IndexOf(ending, position, StringComparison.CurrentCultureIgnoreCase)
        If position <> -1 Then

            Dim endPosition As Integer = position + ending.Length
            Dim startposition As Integer = s.LastIndexOf(">", position - 1, StringComparison.CurrentCultureIgnoreCase) + 1

            los.Add(s.Substring(startposition, endPosition - startposition))

            position = endPosition
        End If
    End While
    Return (los)
End Function