Je hebt een string
blablabla<stx>blablabla<etx>blablabla (boeie waar die vandaan komt).
Voordat je die regex er op los laat kun je die string toch gewoon door een replace functie heen halen?
mystring = replace(replace(mystring, "<stx>", "\r\n"), "<etx>, "\r\n");
Verder zou ik proberen de string "uit elkaar te pluizen" totdat je valid XML elementen hebt (want 't is dus nogal een rommel van tekst en XML door elkaar

) en dan een XML parser gebruiken om de waardes uit de nodes te plukken die je wil hebben. Een regex gebruiken voor XML leidt, in the long run,
gegarandeerd tot
tranen. M.a.w. je wil dus dit bereiken:
Bron (c.q. van leverancier):
code:
1
| 01:evt0001010:<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">1</par></evt>01:evt0001010:<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">1</par></evt>01:evt0002010:<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">0</par></evt>01:evt0001010:<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">1</par></evt>01:evt0002010:<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">0</par></evt> |
Uitsplitsen naar regel / array (o.i.d.) element per event:
code:
1
2
3
4
5
| 01:evt0001010:<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">1</par></evt>
01:evt0001010:<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">1</par></evt>
01:evt0002010:<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">0</par></evt>
01:evt0001010:<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">1</par></evt>
01:evt0002010:<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">0</par></evt> |
Dat
zou je kunnen bereiken door de data te splitten (soms ook wel "exploden" genoemd) op de STX/ETX chars.
Daarna "ontdoen" van non-XML data:
code:
1
2
3
4
5
| <evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">1</par></evt>
<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">1</par></evt>
<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">0</par></evt>
<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">1</par></evt>
<evt nam="evt_mst"><par nam="id">0009</par><par nam="sta">1</par><par nam="mst">0</par></evt> |
(Hoewel je mogelijk wel de data die je hier "weghaalt" nog wil associëren met elke regel/element?)
Vervolgens een XML parser gebruiken op elke regel / element om de node met een
id attribute te vinden en diens value (
0009 in bovenstaande gevallen) eruit te halen o.i.d.
Wederom ontbreekt daar de text die we nodig hebben (inc. stx/etx codes). Hier hebben we bar weinig aan.
SURFivor schreef op woensdag 27 januari 2016 @ 13:50:
Als ik in een terminal-lezer deze data uit lees en weg schrijf in kladblok en dit kladblok-bestand open, dan zie ik daar van die haken staan. Als ik deze informatie copy-paste, dan verdwijnen deze blokhaken.
Dat is omdat "jouw notepad" (geen idee welke je gebruikt; standaard windows notepad?) besluit om STX/ETX weer te geven als een-of-ander haakje. Maar STX/ETX zijn zgn. non-printable codes (sterker: het zijn
control codes). Hoe (en
of) een editor (notepad of eender welke andere editor) besluit weer te geven staat los van 't feit of ze wel-of-niet mee gecopy/paste worden of zichtbaar zijn in een andere editor. For all you know laat
mijn editor van keus ze zien als » en «.
[edit]
En hoewel ik ferm geloof in
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.
vrees ik dat ik (en anderen) nog steeds niet helemaal op 1 lijn zitten met jou dus heb ik 't even uitgewerkt in C# en zoals je zult zien komt hier geen regex aan te pas:
https://dotnetfiddle.net/wM8eAk. Laten we het erop houden dat ik hoop dat ik je nu geen vis heb gegeven maar een joekel van een duw in de juiste richting.
[
Voor 97% gewijzigd door
RobIII op 27-01-2016 21:47
]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij