Avatar billede asol Nybegynder
18. januar 2005 - 20:14 Der er 9 kommentarer

Regex, hjælp til pattern

Hejsa

Jeg har to spørgsmål vedrørende regulære udtryk

1. Hvordan er nummereringen af grupper hvis man har en gruppe inde i en anden? Ex. hvis pattern er ((?:\")([^\"]*)(?:\"))|(noger mere) hvilket nummer får ([^\"]*)?

2. I spørgsmålet http://www.eksperten.dk/spm/580128 fik jeg hjælp til et pattern. Hvordan skal pattern være hvis både det der står i anførelsestegn og det som ikke gør skal findes?
Ex. input string = "\"hej med dig\" \"hej dig\" hej med dig" skal give match på
1: hej med dig
2: hej dig
3: hej
4: med
5: dig
Avatar billede erikjacobsen Ekspert
18. januar 2005 - 20:15 #1
1: Du tæller venstreparenteser
Avatar billede erikjacobsen Ekspert
18. januar 2005 - 20:22 #2
Det er ikke verdens mest elegante, men:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        test("\"hej med dig\" \"hej dig\" hej med Peter");
    }
    private static void test(string s)
    {
        MatchCollection res = Regex.Matches(s,"(?:\")([^\"]*)(?:\")|(\\w+)");
        for(int i = 0; i < res.Count; i++) {
            String match;
          if (res[i].Groups[1].ToString()!="")  {
            match=res[i].Groups[1].ToString();
          } else {
            match=res[i].Groups[2].ToString();
          }
          Console.WriteLine(match);
        }
    }
}
Avatar billede asol Nybegynder
18. januar 2005 - 20:50 #3
Tak og bukker!

Jeg får jo nok lidt svært ved at lokke et svar ud af dig :-)

Smid et svar hvis du er i det humør ellers siger jeg mange tak!
Avatar billede erikjacobsen Ekspert
18. januar 2005 - 20:56 #4
Det er ikke mit humør, nej. Svar selv, accepter eget svar. Eller vent til der
evt. kommer nogen forbi med en mere elefant løsning.
Avatar billede arne_v Ekspert
18. januar 2005 - 20:58 #5
Var den med vilje ?
Avatar billede gammelhat Nybegynder
18. januar 2005 - 21:00 #6
Du kan også navngive dine matches

Regex.Matches(s,"(?:\")([^\"]*)(?:\")|(?<et_navn>\\w+)");

.Groups["et_navn"]
Avatar billede asol Nybegynder
18. januar 2005 - 21:06 #7
arne v: hvad mener du?
Avatar billede arne_v Ekspert
18. januar 2005 - 21:08 #8
Den var til Erik's lille stave bøf !
Avatar billede erikjacobsen Ekspert
18. januar 2005 - 21:20 #9
Ok, lidt off-topic: der var snak om hvide elefanter i et andet spørgsmål her til aften.
Det gav åbenbart mere støj end rimeligt var ;)  Og så har osse fået mig et tastatur
hvor f og g sidder lige ved siden af hinanden...
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

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



Seneste spørgsmål Seneste aktivitet
I dag 20:46 opkaldside Af hagbartm i Mobiltelefoner
I dag 16:05 win 10 vil ikke boote Af bb69 i Windows
I dag 11:20 Lenovo x390 Af tobberjas i PC
I dag 10:14 Alder i Excel Af Nanarsi i Excel
I dag 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel