Найти слово в PDF, а потом вернуть 11 символов после этого слова? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть код, который выполняет поиск на каждой странице PDF документа PDF со словом Data_ID.

. Он есть на каждой другой странице в этом документе PDF, и способ его изменения выглядит следующим образом:

data_id 400M549822

data_id 400M549233

ETC ..

Итак, сейчас моя консоль возвращает все время, когда находит строку data_id, но я также хочу, чтобы она возвращала эти символы после нее ...

Это то, что у меня пока есть:

Imports Bytescout.PDFExtractor
Imports System.IO
Imports System.Text.RegularExpressions

Module Module1
    Class PageType
        Property Identifier As String
    End Class

    Sub Main()
        Dim direcory = "C:\Users\XBorja.RESURGENCE\Desktop\one main\"
        Dim pageTypes As New List(Of PageType)
        Dim ids = "data_id"
        Dim resultstring As String
        resultstring = Regex.Match(ids, "(?<=^.{1}).*(?=.{5}$)").Value

        Dim currentPageTypeName = "unknown"

        For Each inputfile As String In Directory.GetFiles(direcory)
            For i = 0 To ids.Length - 1
                pageTypes.Add(New PageType With {.Identifier = ids(i)})
            Next

            Dim extractor As New TextExtractor()
            extractor.LoadDocumentFromFile(inputfile)
            Dim pageCount = extractor.GetPageCount()

            For i = 0 To pageCount - 1
                '        ' Find the type of the current page
                '        ' If it is not present on the page, then the last one found will be used.
                For Each pt In pageTypes
                    Console.WriteLine(resultstring)
                Next
            Next
        Next
    End Sub
End Module

resultstring - это то, что я пытался использовать с регулярным выражением, но он учитывает только позиции в data_id, а нете, кто после этого.

Итак, как мне сделать это, чтобы он возвращал следующие 10 символов (без пробела) после слова data_id ??

1 Ответ

0 голосов
/ 17 октября 2018

Возвращает 11 символов, включая пробел перед:

'Dim ids = "data_id 400M549822"
Dim ids = "data_id 400M549233"
Dim resultstring = Regex.Match(ids, "(?<=data_id)(\s\w{10})$").Value
Console.WriteLine(resultstring)

Вывод:

 400M549233

Некоторые примечания:

- ?<= = положительный взгляд за
- \s = один пробел
- \w{10} = 10 символов слова включают A-> Z, a-> z, 0-> 9, _

...