Hallo 
Ik heb een probleem met regular expressions, in mijn expressie maak ik een groep en in die groep maak ik vervolgens nog een groep, het probleem is dat ik de waardes uit de 2e groep (sub groep) niet kan ophalen
De name ophalen gaat perfect de security, alliance, corporation, ship en weapon ophalen werkt niet.
De tekst die ik probeer te parsen ziet er zo uit:
Zelf heb ik al verschillende dingen geprobeerd maar niks werkte, kon er helaas ook geen oplossing vinden op google. De enige oplossing die ik heb gevonden is nog een expressie maken voor de "details" groep, maar ik hoop het anders op te kunnen lossen.
Ik heb een probleem met regular expressions, in mijn expressie maak ik een groep en in die groep maak ik vervolgens nog een groep, het probleem is dat ik de waardes uit de 2e groep (sub groep) niet kan ophalen
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| Private Function HandleParties(ByVal PartiesText As String) As String(,) Dim re As New Regex("" & _ "Name: (?<name>.*( \(laid the final blow\))?)" & _ "(?<details>" & _ "\r\n" & _ "Security: (?<security>-?([0-9]\.[0-9])|-?(10\.0))\r\n" & _ "Alliance: (?<alliance>.*)\r\n" & _ "Corp: (?<corporation>.*)\r\n" & _ "Ship: (?<ship>.*)\r\n" & _ "Weapon: (?<weapon>.*)" & _ ")?" & _ "(\r\n\r\n\*\*\*\* Truncated - mail is too large \*\*\*\*)?") If Not re.IsMatch(PartiesText) Then Throw New Exception("Killmail invalid: Something wrong with parties.") End If Dim Parties(,) As String = Nothing Dim Index As Integer = 0 For Each m As Match In re.Matches(PartiesText) ReDim Preserve Parties(5, Index) Parties(0, Index) = m.Groups("name").Value.Trim Parties(1, Index) = m.Groups("security").Value.Trim Parties(2, Index) = m.Groups("details.alliance").Value.Trim Parties(3, Index) = m.Groups("details.corporation").Value.Trim Parties(4, Index) = m.Groups("details/ship").Value.Trim Parties(5, Index) = m.Groups("details/weapon").Value.Trim Index += 1 Next Return Parties End Function |
De name ophalen gaat perfect de security, alliance, corporation, ship en weapon ophalen werkt niet.
De tekst die ik probeer te parsen ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| Name: name1 Security: -10.0 Alliance: None Corp: corporation1 Ship: Raven Weapon: Cataclysm Cruise Missile Name: name2 (laid the final blow) Security: -9.8 Alliance: None Corp: corporation1 Ship: Raven Weapon: Devastator Cruise Missile Name: name3 Security: -8.5 Alliance: None Corp: corporation1 Ship: Dominix Weapon: Praetor I |
Zelf heb ik al verschillende dingen geprobeerd maar niks werkte, kon er helaas ook geen oplossing vinden op google. De enige oplossing die ik heb gevonden is nog een expressie maken voor de "details" groep, maar ik hoop het anders op te kunnen lossen.