Gå til innhold

Filtrere ut beløp av tekst


Anbefalte innlegg

Videoannonse
Annonse

<?php

$pattern = '/9[^(]+\(((\d)+) .+00.00/';
$string = '9amount too large (10 - 999 - 999) NYTPUNBZ00.00';

preg_match_all( $pattern, $string, $matches );

print $matches[1][0];

?>

 

eller:

 

<?php

$string = '9amount too large (10 - 999 - 999) NYTPUNBZ00.00';

$pos = strpos( $string, '(' ) + 1;
$strout = '';
while ( strcmp( $string{$pos}, ' ' ) ) {
 $strout .= $string{$pos};
 $pos++;
}

print $strout;

?>

Endret av grimjoey
Lenke til kommentar

Bruk denne regexen isteden, så slipper du å matche ting du ikke vil ha:

(?<=\()(\d+)

Den ser etter et nummer med parantes foran seg, uten å plukke opp parantesen

<?php
$s = '9amount too large (10 - 999 - 999) NYTPUNBZ00.00';
$r = '/(?<=\()(\d+)/';
$m = array();
preg_match($r, $s, $m);

print_r($m);
?>

Lenke til kommentar
Gjest Slettet+1374861
Bruk denne regexen isteden, så slipper du å matche ting du ikke vil ha:

(?<=\()(\d+)

Den ser etter et nummer med parantes foran seg, uten å plukke opp parantesen

<?php
$s = '9amount too large (10 - 999 - 999) NYTPUNBZ00.00';
$r = '/(?<=\()(\d+)/';
$m = array();
preg_match($r, $s, $m);

print_r($m);
?>

 

noen gode guider på bruk av uttrykk på formen "(?<=\()" eller lignende??

hvordan tenker du du innholdet i denne gruppen, hvis du skulle formulert det som en setning?

forstår ikke helt bruken av "?" sammen med "<=". fikk kjapt googlet noen tilfeller der det tilsynelatende benyttes "?=" og "?:" som jeg må si meg rimelig blank på betydningen av siden jeg er vandt med at "?" er synonymt med "{0,1}".

Lenke til kommentar

Ugh, jeg har en skrivefeil (dvs. parantes for mye. Pokkers auto-lukk). Uttrykket skal være: /(?<=\((\d+)/

 

Jeg har ikke noe spesielle guider, men jeg bruker ofte denne som referanse: http://macromates.com/textmate/manual/regular_expressions

Du er interessert i å se på seksjon 7; mer presist look-around.

 

Søk etter "look-around + regex" i google, så finner du nok en del som beskriver bedre enn jeg kan.

http://www.regular-expressions.info/lookaround.html sier vel noe om temaet.

 

 

Det disse uttrykken gjør er å se etter noe foran eller bak uten capture, så du slipper å få unødvendig mange grupper i resultatet ditt. Tror jeg har beskrevet de en gang tidligere i en tråd på forumet her.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...