Vraag & Antwoord

Webprogrammeren & scripting

[Perl] Regular Expression werkt niet

2 antwoorden
  • Ik ben nog maar pas met Perl bezig en van regexen heb ik al helemaal nauwelijks kaas gegeten, maar nu krijg ik er dan toch mee te maken. Probleem is dat ik onderstaande subroutine heb gemaakt die in een while loop door een bestand heen loopt om regel voor regel het formaat te checken. Probleem is dat hij altijd aangeeft dat het formaat niet correct is en ik heb geen idee wat ik fout doe. Volgens mijn tooltje "Regex Coach" is de regular expression (buiten Perl om) helemaal in orde. Aangezien ik niet weet of het belangrijk is, is het misschien ook handig om te vermelden dat het input bestand een CSV bestand uit Excel is, dat rechtstreeks naar een Solaris machine wordt ge-FTP't. Het Unxi formaat is wat anders dan het windows formaat, maar ik dacht dat dat met name in de linebreaks zat. Daarom heb ik al de $ op het einde weggelaten, met de bedoeling om in het midden te laten of er wel of geen katakter achteraan komt. Maar misschien heeft dit er ook wel helemaal niks mee te maken. [code:1:3a5832b197] if ( ! ($line =~ /^[0-9A-Fa-f]{2}-[0-9A-Fa-f]{2}-[0-9A-Fa-f]{2}-[0-9A-Fa-f]{2}-[0-9A-Fa-f]{2}-[0-9A-Fa-f]{2},[0-9A-Fa-f]{16}/)) { print "Incorrect pattern!";}; [/code:1:3a5832b197] Het input bestand: [code:1:3a5832b197] e9:e1:72:3a:32:14,a84f26ce12e7ef29 c3:34:46:c2:7a:c0,9f2a2731443fa3b2 5d:aa:e6:96:6e:e6,a84f21196af1716a etc... [/code:1:3a5832b197]
  • Waarom heb je steeds een streepje tussen de waarden staan (-) in plaats van een dubbele punt. Voor zover ik weet stelt een streep op die plek gewoon een letterlijke streep voor (al ben ik ook geen expert op dit onderwerp). Verder heb ik gevonden dat je in PERL aan moet geven dat je de regex wil laten matchen.. door m/ te gebruiken. Je regex wordt dan: [code:1:5b8804a6ef] if ( ! ($line =~ m/^[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2},[0-9A-Fa-f]{16}/)) { print "Incorrect pattern!";}; [/code:1:5b8804a6ef] Als het niet werkt probeer het dan eens met 1 van de genoemde oplossing ipv allebei.. Voor de duidelijkheid.. ik heb nog nooit iets met PERL gedaan. Hopelijk heb je er wat aan ;)

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.