2014-01-26 2 views
-1

У меня есть сценарий PowerShell, который вытаскивает строки, содержащие «.html», «.css» и так далеепоиска имен файлов в текстовых файлах

однако, что мне нужно, чтобы иметь возможность вырезать полное имя файл

используя шаблон .... весь образец возвращается пример

......... \. HTML возвращает

SRC = "blank.html"

мой ответ пришел в VB (с кучей работы и еще больше исследований), я хотел поделиться с вами всеми результатами, это не очень, но это работает. есть ли более простой способ?

Я прокомментировал код, чтобы помочь в понимании.

Private Sub find() 
    Dim reader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(openWork.FileName) 
    Dim a As String 
    Dim SearchForThis As String 
    Dim allfilenames As New System.Text.StringBuilder 
    Dim first1 As String 
    Dim FirstCharacter As Integer 
    'Dim lines As Integer 

    SearchForThis = txtFind.Text 
    Do 
     a = reader.ReadLine 'reader.Readling 
     If a = "" Then 
      a = reader.ReadLine 
     End If 
     If a Is Nothing Then 'without this check the for loops run with bad data, but I can't check "a" without reading it first. 

     Else 
      For FirstCharacter = 2 To a.Length - SearchForThis.Length ' start at 2 to prevent errors in the ")" check 
       If Mid(a, FirstCharacter, SearchForThis.Length) = SearchForThis Then ' compare the line character by character to find the searchstring 
        If Mid(a, FirstCharacter - 1, 1) <> ")" Then ' checks for ")" just before the searchstring (a common problem with my .CSS finds) 
         For y = FirstCharacter To 1 Step -1 

          If Mid(a, y, 1) = Mid(a, FirstCharacter + SearchForThis.Length, 1) Then ' compares the character after searchstring till I find another one 
           Dim temp = Mid(a, y + 1, (FirstCharacter + SearchForThis.Length) - 1 - y) ' puts the entire filename into variable "temp" 
           allfilenames.Append(temp & Chr(13)) 'adds the contents of temp (and a carrage return) to the allfilenames stringbuilder 
           y = 1 
          Else 

          End If 
         Next 
        End If 
       End If 
      Next 
     End If 


    Loop Until a Is Nothing 

    Document.Text = allfilenames.ToString 
    reader.Close() 

End Sub 

(обновление для комментариев ... спасибо за вход)

каждой строки в поле поиска .css файл выглядит примерно так.

addPbrDlg.html:12:<link rel=stylesheet href="swl_styles-5.0o-97581885.css" TYPE="text/css"> 
addPbrDlg.html:727:    html(getFrame(statusFrame).strErrorMessage).css('color','red'); 

для этого я хочу, чтобы вернуть

swl_styles-5.0o-97581885.css

но не возвращает

statusFrame) .strErrorMessage) .css

в основном я хочу, чтобы вырезать имена файлов из HTML-кода , но если я использую шаблон как

...................... ....... \. CSS

он вернется бы что-то вроде

т HREF = "swl_styles-5.0o-97581885.css

Наконец ... re - некоторые переменные, о которых мне не нужно беспокоиться (из-за моей личной ситуации), как я знаю, что все веб-страницы являются «.html», все изображения «.gif» содержат «.css» и «.js», файлы, которые я хочу потянуть. Но поскольку дизайнеры чрезвычайно единообразны, я знаю, что нет никаких файлов-сюрпризов (.jpg или .htm) Я также могу предположить, что если после имени файла есть одна кавычка, то будет одна цитата. то же самое с двойной цитатой.

Спасибо за ваш вклад до сих пор ... Я ценю ваше время и знания.

+0

В чем именно ваш вопрос? – kukido

+0

показать нам пример полной строки и то, что вы хотите извлечь из строки. –

+0

вы правы. Я должен был привести пример некоторых строк поиска – shortcircuitaz

ответ

0

Вы должны использовать Regex и сделать что-то вроде этого

Dim files = Regex.Matches("<your whole file text>", "Your regex pattern"); 

Вашего regex шаблона будет выглядеть примерно так "\ ASRC ="»+ ((\ HTML) |.. (\ CSS)). "")».Вероятно, это неправильно, но когда вы получаете это прямое следуя с

Dim fileList as new List(of String) 
For Each file as Match in files 
    ' strip " src=" " and last " " " 
    fileList.Add(file.Value.Substring(5, file.Value.Length - 6)) 

Next 
Смежные вопросы