Oprettet ons. d. 18. januar 2012 kl. 10:56:37

killer_bee
killer_bee (26.384 point. Point ude: 0)

boost regex_replace og sregex_token_iterator hente match positioner.

Hej alle,

Jeg har et lille problem, jeg har brug for positionerne/længde af de matches min regex har fundet.
Jeg kan hente det fra smatch variablen, men mangler en metode til at hente det fra tokenize og replace resultatet. Ved det er lidt kryptisk men her eksempler på kode:

KAN GODT HENTE HER:
string sBuf="Some Buffer data";
char * szRegEx = "(Bu)";
  regex rxTemp(szRegEx);
  smatch what;
  bResult = regex_search(sBuf, what, rxTemp, match_default);
  sResult = what[1];
  int nPosTotal=what.position();
  int nLenTotal=what.length();
  int nPosMatch=what.position(1);
  int nLenMatch=what.length(1);


KAN IKKE HENTE HER:

- REPLACE:

string sBuf="Some Buffer data";
char * szRegEx = "(Bu).*(da)";
char * szFormat = "$2 lalala $1";
  regex rxTemp(szRegEx);
sResult = regex_replace(sBuf, rxTemp, szFormat, match_default | format_no_copy).c_str();

Her har jer kun rxTemp variablen, men den har ingen position eller længde på de matches jeg kan "hive ud"...

- TOKENIZE


    regex rxSearch(szSearch, regex::normal|regex::icase);
    smatch what;
    regex_search(sBuf, what, rxSearch);

    string s = what[1];
    regex rxTokenize(szTokenize, regex::normal|regex::icase);
    sregex_token_iterator i(s.begin(), s.end(), rxTokenize, 1);
    sregex_token_iterator j;

    while (i != j)
    {
      asResult.Add(i->str().c_str());
      i++;
    }

Her har jeg kun "i" og rxSearch .. men igen hvordan finder jeg pos og lengde...

Tak for hjælpen.

Skrevet ons. d. 18. januar 2012 kl. 13:17:35| #1

killer_bee
killer_bee (26.384 point)
og hvis nogen sider med viden om at det ikke kan lade sig gøre må i meget gerne også skrive så jeg ikke tror det er muligt :D

Skrevet tor. d. 26. januar 2012 kl. 15:36:03| #2

killer_bee
killer_bee (26.384 point)
nå men ser ud til ingen har svaret ... lukker .. og har ikke fundet en løsning :D

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

.NET RegEx: tekst mellem to markører

Oprettet den 28. april 2012 kl. 19.34
dingemann giver 60 point for svar | Giv et svar »

Streng længde med karaktere på bestemte pladser

Oprettet den 17. april 2012 kl. 10.52
joki giver 30 point for svar | Giv et svar »

Simpel sammenlignen på 2-3 værdier

Oprettet den 3. april 2012 kl. 14.07
bendixen giver 200 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger