[CGI/Perl] split string array met quotes

Pagina: 1
Acties:

  • Daniel304
  • Registratie: December 2000
  • Laatst online: 23-05 23:17
Ik ben al het het 2 dagen bezig met het zoeken naar de beste manier om een zoek string in een array te zetten.. alle losse worden in een apart array element en alles wat tussen quotes staat ook in een array element. let niet op de string zelf het is maar een voobeeld ;).
code:
1
2
3
4
5
$string = "perl \"split string\" met \"array quotes\"";
$string =~ s/(\")(.*)(\")//;
$quotes = $1;
@array = split(" ", $string);
push(@array,$all_quotes);

Dit is op zich niet fout maar doet niet wat ik wil uiteindelijke uitvoer wil ik
code:
1
2
3
4
$array[0] = "perl";
$array[1] = "split array";
$array[2] = "met";
$array[3] = "array quotes";

[ Voor 10% gewijzigd door Daniel304 op 19-01-2004 11:54 ]


  • Juup
  • Registratie: Februari 2000
  • Niet online
Wat vind je van zo'n oplossing:
Perl:
1
2
3
4
while ($string =~ m/(\w+)/g)
{
  push(@array, $1);
}

Let op! code is untested.

edit oh nee je wilt die dingen tussen quotes in z'n geheel.

[ Voor 21% gewijzigd door Juup op 19-01-2004 12:06 ]

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Juup
  • Registratie: Februari 2000
  • Niet online
En zo:
Perl:
1
2
3
4
5
6
7
8
### \b is een word boundary in regexps. dit matcht tussen een non-word en een word in
### (bv tussen spatie en letter)

while ($string =~ m/("|\b)(\w+)(\1)/g)
{
  push (@array, $2);
  #print $2, "\n";
}

[ Voor 24% gewijzigd door Juup op 19-01-2004 12:14 ]

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Daniel304
  • Registratie: December 2000
  • Laatst online: 23-05 23:17
helaas werkt deze code niet zoals ik het wil (mijn reactie is traag maar ben er niet meer aan toe gekomen...

de originele string
code:
1
mail problemen "outlook expres"

moet een array produceren
code:
1
2
3
array[0]="mail"
array[1]="problemen"
array[2]="outlook expres"

de code van Jaaap zal alsnog elk woord in een apart element van de array zetten

[ Voor 11% gewijzigd door Daniel304 op 29-01-2004 11:06 ]


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

met die code van jaap moet het lukken toch?

\b{0,}"([a-zA-Z0-9,spatie,enz(of wildcard oplossing]){0,}"

zoiets.

[ Voor 29% gewijzigd door D2k op 29-01-2004 11:10 ]

Doet iets met Cloud (MS/IBM)


  • Daniel304
  • Registratie: December 2000
  • Laatst online: 23-05 23:17
ik heb de print functie geuncomment en wat ik krijg is
code:
1
2
3
4
array[0]="mail"
array[1]="problemen"
array[2]="outlook"
array[3]="expres"

hij matched ook op spaties binnen de quotes dit zou hij dus neit moeten doen tot de quote is afgelopen getest door een string op te geven
code:
1
mail probleem"outlook express"

[ Voor 63% gewijzigd door Daniel304 op 29-01-2004 11:31 ]


  • Daniel304
  • Registratie: December 2000
  • Laatst online: 23-05 23:17
ik heb de oplossing gevonden.. hij zal best mooier kunnen mar hij werkt
code:
1
2
3
4
5
   while ($vraag =~ m/(")([\w|\s]+)(")/g)
   {
      push (@array, $2);
      print $2, "-\n";
   }
Pagina: 1