Portál AbcLinuxu, 7. května 2025 12:10

Dotaz: Rozparsovani SELECTu promoci regexpu

bambas avatar 26.3.2014 15:36 bambas | skóre: 20 | blog: bambasovo
Rozparsovani SELECTu promoci regexpu
Přečteno: 289×
Odpovědět | Admin
Zdravim, snazim se rozparsovat selectovane atributy ze select pomoci regexpu select:
select a, b, ab, cd, e, fghi, jk, ker_ccc_ep.mfw(0, 'asasa', 8) as QWE,neco,blbalb_bla from tabulka_tb_vw where x=3 Z tohoto selectu si vydoluju retezec mezi "select" a "from" a to se pak pomoci regexpu snazim rozdelit:

            string SQL = sql.ToUpper();
            int indexOfSelect = SQL.IndexOf("SELECT") + "SELECT".Length;
            int indexOfFrom = SQL.IndexOf("FROM");
  	    string regexp = @"[,]*?([a-zA-Z0-9 _().\']+|)(?!,)*([a-zA-Z0-9 \'])";
	    MatchCollection spaceMatches = Regex.Matches(SQL.Substring(indexOfSelect, indexOfFrom - indexOfSelect), regexp);
            if (spaceMatches != null && spaceMatches.Count > 0)
                foreach (Match m in spaceMatches)
                {
                    Console.WriteLine(m.Value);
                }		
Bohuzel se vzdy dostanu na tento vysledek:
 A
, B
, AB
, CD
, E
, FGHI
, JK
, KER_CCC_EP.MFW(0
, 'ASASA'
, 8) AS QWE
,NECO
,BLBALB_BLA
a ja potrebuji, abych mel ker_ccc_ep.mfw(0, 'asasa', 8) as QWE jako jednu "polozku". mohli byste prosim poradit s tim regexpem? Diky.
Cowboys from Hell

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (bambas (tazatel))
wamba avatar 27.3.2014 00:15 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Rozparsovani SELECTu promoci regexpu
Odpovědět | | Sbalit | Link | Blokovat | Admin
((?:[^(,]|[(][^)]*[)])+) — zapsáno nepřehledně a nepočítá s možností závorek v závorkách (perl-regex)
This would have been so hard to fix when you don't know that there is in fact an easy fix.
bambas avatar 28.3.2014 09:56 bambas | skóre: 20 | blog: bambasovo
Rozbalit Rozbalit vše Re: Rozparsovani SELECTu promoci regexpu
Super, diky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.