Avatar billede tetrix Nybegynder
12. december 2008 - 18:40 Der er 14 kommentarer og
1 løsning

Tage noget ud af en tekst

Hejsa.

Lad os sige at jeg har en tekst der ser således ud:

[blabla='eksempel' skaludtages='9999' blabla='eksempel']

Hvordan får jeg så taget 9999, altså fra "skaludtages" ud fra teksten? Har prøvet mig lidt frem, men det gik galt og alt blev for kompliceret samt uoverskueligt :-P Så jeg håber at en venlig person kan hjælpe mig! (:

vh. Tetrix
Avatar billede arne_v Ekspert
12. december 2008 - 19:18 #1
Du kan enten lave noget InStr, Mid spagetti.

Eller du kan bruge regex.
Avatar billede arne_v Ekspert
12. december 2008 - 19:32 #2
VBS regex eksempel:

s = "[blabla='eksempel' skaludtages='9999' blabla='eksempel']"
Set re = New RegExp
re.Pattern = "(?:skaludtages=')(\d+)(?:')"
re.Global = True
Set mm = re.Execute(s)
Set m = mm.Item(0)
WScript.Echo "værdi=" &  m.SubMatches(0)
Set m = Nothing
Set mm = Nothing
Set re = Nothing
Avatar billede tetrix Nybegynder
12. december 2008 - 20:06 #3
Hej Arne.
Jeg prøvede regex eksempel, men kunne ikke få det til at funke (det skal siges at jeg bruger vb6.0)

Jeg ville have brugt instr, hvis det ikke var fordi jeg startede igen på VB6 for nylig, og kan ikke huske alle de forskellige koder pga. min dårlige hukommelse :D
Avatar billede tetrix Nybegynder
12. december 2008 - 21:01 #4
Forresten, jeg kan ikke bruge mid, da valuen ikke altid er i midten :-) Ellers har jeg misforstået "mid" tingen :D
Avatar billede arne_v Ekspert
12. december 2008 - 21:08 #5
Ja.

Du angive hvad den skal tage.

http://www.w3schools.com/vbscript/func_mid.asp
Avatar billede arne_v Ekspert
12. december 2008 - 21:08 #6
Men lad mig lige prøve og starte min gamle NT 4 box med VB6 og se om jeg kan få regex til at virke.
Avatar billede arne_v Ekspert
12. december 2008 - 21:22 #7
Følgende virker fint hos mig i VB6:

Private Sub Command1_Click()
    Dim s As String
    Dim re As RegExp
    Dim mm As MatchCollection
    Dim m As Match
    s = "[blabla='eksempel' skaludtages='9999' blabla='eksempel']"
    Set re = New RegExp
    re.Pattern = "(?:skaludtages=')(\d+)(?:')"
    re.Global = True
    Set mm = re.Execute(s)
    Set m = mm.Item(0)
    MsgBox "værdi=" & m.SubMatches(0)
    Set m = Nothing
    Set mm = Nothing
    Set re = Nothing
End Sub
Avatar billede arne_v Ekspert
12. december 2008 - 21:22 #8
Efter at jeg lige fandt dette på nettet:

To use this library in your Visual Basic application, select Project|References in the VB IDE's menu. Scroll down the list to find the item "Microsoft VBScript Regular Expressions 5.5".
Avatar billede tetrix Nybegynder
12. december 2008 - 21:33 #9
Tusind tak..
Gi' et svar :-)
Avatar billede arne_v Ekspert
12. december 2008 - 21:39 #10
kommer her
Avatar billede tetrix Nybegynder
13. december 2008 - 01:37 #11
Kan man få den der regex ting til også at kunne se bogstaver i value?
Avatar billede arne_v Ekspert
13. december 2008 - 01:48 #12
Jo da.

re.Pattern = "(?:skaludtages=')([ABCabc123]+)(?:')"

tillader tegn fra ABCabc123.

re.Pattern = "(?:skaludtages=')([A-Za-zÆØÅæøå0-9]+)(?:')"

tillader alle danske bogstaver og tal.
Avatar billede tetrix Nybegynder
13. december 2008 - 13:27 #13
Takker endnu engang! Din placering på Eksperten er velfortjent :-)
Avatar billede tetrix Nybegynder
13. december 2008 - 14:59 #14
Men lige et allersidste spørgsmål-

Hvordan tillader jeg ALT bortset fra ' ?
Avatar billede arne_v Ekspert
14. december 2008 - 15:07 #15
[^']+

hat på betyder alt andet end det efterfølgende
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester