[perl regexp] Vreemde regexp uitkomst

Pagina: 1
Acties:

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
code:
1
2
3
4
5
$string = "ABC\r\nDEF";
print $string =~ m/(?:\n|\r\n)/;  #uitkomst: 1
print $string =~ m/(\n|\r\n)/;    #uitkomst: 0
print $string =~ m/\r\n?/;    #uitkomst: 1
print $string =~ m/(\r\n?)/;    #uitkomst: 0

Waarom bieden deze in principe zelfde regexps verschillende uitkomsten? Ik snap er nix van.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Hrrmz is dit een RTFM of is de vraag te moeilijk ofzo?

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • tomato
  • Registratie: November 1999
  • Niet online
Zoals je zelf al in dit topic liet zien geeft een regex match een array terug met alle capturings.

Kijken we naar het volgende voorbeeld:
code:
1
2
print 'abcdef' = ~ /([a-d])/g;
# abcd

Uitkomst is als commentaar toegevoegd.

Wat gebeurt er? De regex matcht 4 keer (a, b, c, d). Het match statement geeft als resultaat een array met daarin alle matches.
Wanneer je een array print worden alle elements achterelkaar geprint (eventueel met scheidingsteken $, maar default is dat een empty string).

Dus de uitkomst is in jouw voorbeeld geen 0, maar een array met daarin alle matches die achter elkaar geprint worden. Je voorbeeld is wat ongelukkig gekozen omdat je die linebreaks en linefeeds niet goed ziet op je scherm :)

Wanneer er geen capturing parentheses in je pattern voorkomen wordt de match een boolean expression (true on succes, false on failure).

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Je bent een schat, tomaat!
Ik heb even iets anders genomen dan \r en \n, nu zijn er ten minste normale outputs, die altijd true zijn... zolang dat iig de bedoeling is!

Bedankt he!

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea