2016-04-15 1 views
1

Salut Je suis à la recherche d'un motif particulier (préfixe) dans le fichier et en essayant de retourner le mot entier. Il y a plusieurs fois le modèle est là dans le fichierRecherche vbscript pour le préfixe de motif et le mot de retour

Par exemple: J'ai un fichier texte qui contient du texte comme: -

[CATS].[Hello_World] Lorem Ipsum [CATS].[Hi_Venus] Demo Text [CATS].[Yo_Moon] Lorm Ipsum 

Il n'y a pas de ligne appropriée dans le fichier texte, signifie une ligne peut contenir chose entière donc la ligne de retour est problématique. Le programme devrait retourner [Hello_World], [Hi_Venus], [Yo_Moon] pour le motif correspondant [CATS].

Mon code Cureent (fichier .hta) est: -

Dim sStartPath, sStartFile, sFilter, sCaption, filePath 
sStartPath = "D:\Remote" 
sStartFile = sStartPath & "\nul" 
sFilter = "All Files (*.*)|*.*|" _ 
    & "VBScript (*.vbs;*.vbc)|*.vbs;*.vbc|" _ 
    & "HTML (*.htm;*.html;*.hta)|*.htm;*.html;*.hta|" 
sCaption = "Choose a File:" 

Sub ProcessFile() 
On Error Resume Next 
filePath = document.My_Process_Form.txtfile.value 
     Set contents = filePath.OpenAsTextStream 
     If err.number = 0 then 
     Linenum = 0 
     Do Until contents.AtEndOfStream 
      line = contents.readline 
      Linenum = Linenum + 1 
       Test = Instr(line, [CATS]) 
       If Isnull(Test) = false then If Test > 0 then   demo.innerText = "1" & filePath & " " & Linenum 
     Loop 

     Else 
      err.clear 
     End If 
End Sub 

Je l'utilise dans une application hta avec deux autres fonctions. Renvoie le chemin du fichier et le numéro de ligne qui contient le motif. Mais je veux qu'il recherche le préfixe et renvoie l'élément suivant comme mentionné ci-dessus.

+0

'MonTableau = de Split (ligne, "[CATS].", -1, 1)'? Voir [Fonction fractionnée] (https://msdn.microsoft.com/fr-fr/library/0764e5w5 (v = vs.84) .aspx). – JosefZ

+1

Split() n'est pas bon, car l'entrée contient du texte qui n'est ni séparateur ni cible. –

Répondre

4

Utilisez une expression rationnelle qui recherche le texte dans [] par [CATS]. Comme précédé dans

>> s = "[CATS].[Hello_World] Lorem Ipsum [CATS].[Hi_Venus] Demo Text [CATS].[Yo_Moon] Lorm Ipsum " 
>> Set r = New RegExp 
>> r.Global = True 
>> r.Pattern = "\[CATS\]\.(\[[^]]+\])" 
>> Set ms = r.Execute(s) 
>> For Each m In ms 
>>  WScript.Echo m.SubMatches(0) 
>> Next 
>> 
[Hello_World] 
[Hi_Venus] 
[Yo_Moon]