jag har en textfil som innehåller följande tabellkonstruktion Detta kanske kan vara en början på nåt Får det inte att funka.. Jag vet inte vad du använder för klasser.. Det finns ingen Execute metod på Regex i .NET Framework Funkar här.. enligt RegexBuddy blir VB6-koden så här (jag har inte testat den)reg exp, parsa ascii tabell
*------------+------------*
| hej | hejsan |
+----+---+--+ |
| | a | | |
*----+---+--+------------*
dvs varje cell som ligger i hörnen har * som markerare mot ytterhörnen och + mot andra avgränsande hörn, medans celler inne i tabellen enbart har + som hörnmarkerare.
ja, ni förstår ju själva när ni tittar på bilden.
nu hade jag tänkt läsa in ascii filen och parsa den mha regular expression.
vad ska jag ange för uttryck så att jag kan särskilja (returnera text) så att jag vet när det är rad1 och slutrad och allt där emellan?
dvs jag vill läsa rad för rad men veta om det är en header (hej, hejsan) eller en "följdcell" (a).
header celler avgränsas alltså av * i övre ytterhörn och + i övriga hörn
medans övriga celler avgränsas av + i alla hörn
medans bottenceller avgränsas av * i nedre ytterhörn och + i övriga hörn
/ASv: reg exp, parsa ascii tabell
1. Hittar *----+----*
\*[-\+]+\*
2. Strängar mellan | |
\|([^|\*\+]+)
(åtkomst till träffarna: match.Groups(0) osv..)Sv:reg exp, parsa ascii tabell
<code>
vbregexp.Pattern = "\*[-\+]+\*"
vbregexp.IgnoreCase = True
While stream2.AtEndOfStream = False
txttemp = stream2.ReadLine
strbuf = vbregexp.Execute(txttemp)
Debug.Print strbuf
Debug.Print txttemp
Wend
</code>
strbuf (sträng) är alltid tom, även med vbregexp.Pattern = "\|([^|\*\+]+)"
Oj, nu hann jag läsa färdigt ditt inlägg också...ska prova åtkomstmetoden först innan jag säger nåt ;)
Ok, testad...nej, min match collection får bara "<No variables>"Sv: reg exp, parsa ascii tabell
Sv: reg exp, parsa ascii tabell
<code>
Dim myRegExp As RegExp
Dim myMatches As MatchCollection
Dim myMatch As Match
Set myRegExp = New RegExp
myRegExp.Pattern = "\*[-\+]+\*"
Set myMatches = myRegExp.Execute(SubjectString)
For Each myMatch In myMatches
'matched text: myMatch.Value
'match start: myMatch.FirstIndex
'match length: myMatch.Length
For I = 1 To myMatch.SubMatches.Count
'backreference text: myMatch.SubMatches(I-1)
Next
Next
</code>
I detta fall finns inga capturing groups, men en match ska finnas.