Avatar billede baitianlong Nybegynder
16. marts 2005 - 15:38 Der er 14 kommentarer og
1 løsning

test mod regular expression

Hvordan tester jeg en streng mod et regulært udtryk ?

Det skal matche: bogstav+kolon+backslash+et antal bogstaver eller specialtegn+et punktum+csv

Eksempel:

c:\tra la-la.csv

:)
Avatar billede soreno Praktikant
16. marts 2005 - 16:25 #1
F.eks.
#region Using directives

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
#endregion

namespace RegExp
{
    class Program
    {
        public static void Main(string[] args)
        {
            String input = @"c:\tra la-la.csv";
            String re = @"[a-z]:\\[a-z\- ]+\.csv$";
            Console.Write("#"+input+"# matches: ");               
            Console.WriteLine(Regex.IsMatch(input, re, RegexOptions.RightToLeft));
        }

    }
}

Output:
#c:\tra la-la.csv# giver: True
Avatar billede soreno Praktikant
16. marts 2005 - 16:31 #2
Men det er selvfølgelig afhængig af hvormeget du vil tillade..
F.eks. matcher ovenstående ikke:
            String input = @"c:\tra\ la-la.csv";
Avatar billede Syska Mester
17. marts 2005 - 21:48 #3
Så lige denne her tråd, og kom til at tænke på den gang jeg ledte efter regular expressions fandt jeg ikke noget i hjælp filerne. Men fandt i stedet en alm side på nettet som om handlede det.
Er der nogen der kender et link til microsoft som beskriver hvad alle de forskellige regular expression gør man kan bruge....
Avatar billede baitianlong Nybegynder
17. marts 2005 - 22:22 #4
Jeg siger tak for svaret, Soreno, men desværre vil jeg gerne stille et par spørgsmål :)

String re = @"[a-z]:\\[a-z\- ]+\.csv$";

gider du forklare det regulære udtryk ?
jeg er forundret over @ og derefter \\ for med @ burde \ jo være \ osv.

Men den skal også sige true hvis: c:\hejhej\hejhej.csv

Så jeg undskylder at jeg ikke var præcis nok i min formulering, Det skal være en csv fil '"et-eller-andet"' sted på maskinen :))
Avatar billede soreno Praktikant
18. marts 2005 - 11:50 #5
\ bruges i syntaksen for regulære udtryk. Derfor skal \ escapes hvis man ønsker at matche dette tegn dvs. "\\".
Hvis jeg havde undlandt @ så skulle der "\\\\" til at opnå det samme (først escapes i strengen, derefter i det regulære udtryk).

Det regulære udtryk:
[a-z]:\\[a-z\- ]+\.csv$

Matcher:
[a-z] efterfulgt af
: efterfulgt af
\ efterfulgt af
[a-z\- ]+ (som er mængden {a-z,-, }, med 1 eller flere repetitioner) efterfulgt af
.cvs (som defineres til at være det sidste der må være i strengen fordi der bruges "$")

Men hvis du vil verificere om der faktisk findes en fil på det sted kunne du jo bare bruge noget ala:
            if (!File.Exists(@"c:\tra\ la-la.csv"))
            {
                Console.WriteLine("Filen eksisterer ikke !");
            }
            else
            {
                Console.WriteLine("Filen eksiserer!!");
            }
Avatar billede baitianlong Nybegynder
18. marts 2005 - 15:06 #6
Ja, men det er omvendt.

Det er et felt hvor brugeren indtaster: Hvor vil du gemme data? Så den skal blot verificere at brugeren har skrevet en "korrekt" sti og ikke bare "sdkfjhsdk"

Så det er noget med: [a-z]:\\[a-z\\\-\_ ]+\.csv$

Ser det rigtigt ud ?
Avatar billede soreno Praktikant
18. marts 2005 - 18:16 #7
Det regulære udtryk vil også sige "Ja" til:
c:\aa\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\b.csv

Så det er vel ikke præcist nok.

Der er også mange andre tegn som et filnavn kan bestå af. F.eks. er det noget med at det i nyere Windows faktisk kan være unicode. Så begynder det er være besværligt med regulære udtryk. Og hvad nu hvis man ønsker at gemme på en server som tilgås \\server\dir...

Var det ikke bedre at lave en fileselektor GUI der så kun tillader at man vælger lovlige filer. Med andre ord, hvorfor skal man skrive stien manuelt ?
Avatar billede baitianlong Nybegynder
18. marts 2005 - 19:09 #8
Det er mit første program i C# og skal kun anvendes af en person, han er ikke helt "dum", men jeg vil blot sikre mig at han ikke skriver f.eks "data" som fil, og ikke mere... Jeg har skrevet c:\data.csv i tekstboxen som default, men hvis nu han vil have det i f.eks C:\minedata\18.03.2005.csv er det jo ok. Men det skal være den rigtige fil-syntax, om man vil :)
Avatar billede baitianlong Nybegynder
18. marts 2005 - 19:12 #9
Filen bliver oprettet når han skriver navnet, eller overskrevet, hvis den allerede er der :)
Avatar billede soreno Praktikant
18. marts 2005 - 19:24 #10
Det jeg mener er, kan du ikke bare bruge en fileselector dialog til at bestemme filnavnet ?

Ligesom dem man bruger når man vil gemme en side i browseren (eller lign.) ?
Avatar billede baitianlong Nybegynder
18. marts 2005 - 21:37 #11
Jo, sådan en fætter havde jeg tænkt på, men jeg regnede med at den var for kompliceret ?!
Avatar billede soreno Praktikant
19. marts 2005 - 08:49 #12
Jeg ved ikke hvordan man gør. Jeg holder mig helst fra GUI.
Avatar billede baitianlong Nybegynder
19. marts 2005 - 21:41 #13
Jeg siger tak for hjælpen :) Jeg elsker GUI, det er ligesom at male et maleri

Smider du lige et svar...
Avatar billede baitianlong Nybegynder
19. marts 2005 - 21:43 #14
og i det kan du evt skrive hvorfor RightToLeft bruges :)
Avatar billede soreno Praktikant
19. marts 2005 - 22:10 #15
RightToLeft har ikke betydning i netop det regulære udtryk.

Hvorfor det skal gøres har noget at gøre med endelige automater, som er den operationelle del af regulære sprog (regulære udtryk er den deklarative del). Men, det er noget omfattende at gå i detaljer med.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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