Hogyan kivonat minden egész értékeket string egy regex?

szavazat
3

Igyekszem tanulni regex. Van a húr:

$x = 5ft2inches;

Hogyan tudok olvasni [5,2] egy tömb egy regex?

A kérdést 27/08/2009 01:03
a forrás felhasználó
Más nyelveken...                            


8 válasz

szavazat
5

Ha feltételezzük, hogy a húr lesz a forma „{szám} ft {szám} hüvelyk” akkor használd preg_match () :

preg_match('/(\d+)ft(\d+)inches/', $string, $matches);

(\d+)egyezik egy sor egy vagy több számjegy. A zárójelben megmondja preg_match(), hogy helyezze a párosított számokat a $matchesváltozó (A harmadik érv a funkció). A függvény visszatérési értéke 1, ha készül egy mérkőzés, 0, ha nem.

Itt van, amit $matchesúgy néz ki, mint a sikeres mérkőzés:

Array
(
    [0] => 5ft2inches
    [1] => 5
    [2] => 2
)

Az egész illeszkedő szöveget az első eleme, akkor a zárójelben mérkőzést követni. Tehát, hogy a kívánt tömböt:

$array = array($matches[1], $matches[2]);
Válaszolt 27/08/2009 01:18
a forrás felhasználó

szavazat
2

Feltételezve PHP, bármilyen okból senki nem javasolta osztott?

$numbers = preg_split('/[^0-9]+/', $x, -1, PREG_SPLIT_NO_EMPTY);
Válaszolt 27/08/2009 01:24
a forrás felhasználó

szavazat
2

Perl-ben

#!/usr/bin/perl

use strict;
use warnings;

my $x = "5ft2inches";
my %height;
@height{qw(feet inches)} = ($x =~ /^([0-9]+)ft([0-9]+)inches$/);

use Data::Dumper;
print Dumper \%height;

output:

$ VAR1 = {
          Lába '=> '5'
          'Hüvelyk' => '2'
        };

Vagy segítségével split:

@height{qw(feet inches)} = split /ft|inches/, $x;
Válaszolt 27/08/2009 01:15
a forrás felhasználó

szavazat
1

A reguláris kifejezések, akkor vagy kivonat az adatokat egy kontextus módon, vagy egy contextful módon.

IE, ha egyezik a bármely számjegy: (\d+)( Megjegyzés: Feltételezi, hogy a nyelvet kitüntetéssel \ d, mint a helyi „bármilyen számjegy” )

Ezután kivonat minden csoportban, de talán nem is tudja, hogy a húr valójában „5 2inches” helyett „6ft2inches” OR „29Cabbages1Fish4Cows”.

Ha hozzá keretében: (\d+)ft(\d+)inches

Tudod az biztos , amit kivont (Mert egyébként azt sem, hogy egy mérkőzés), és tekintse meg az egyes csoport viszont, hogy a láb és hüvelyk.

Ha nem mindig megy, hogy egy számpár kivonat, akkor kell, hogy a különböző komponensek nem kötelező. Távozás Ez a reguláris kifejezés Cheat Sheet (His más puskák vannak remek is) további információért

Válaszolt 27/08/2009 01:19
a forrás felhasználó

szavazat
1

A reguláris kifejezés egyszerűen /[0-9]+/, de hogyan lehet ez egy tömb függ, milyen programozási nyelvet használja.

Válaszolt 27/08/2009 01:06
a forrás felhasználó

szavazat
0
use `/[\d]/`
Válaszolt 27/08/2009 01:21
a forrás felhasználó

szavazat
0

Van, hogy néz ki a két számjegyű szám.

/ \ D {1,2} /

Lehet dolgozni egy kicsit jobban a láb és hüvelyk. A maximális értéke „2” kell-é, hogy bármi is megfelelő.

Válaszolt 27/08/2009 01:21
a forrás felhasználó

szavazat
0

Nem beszélve a nyelvet használ, ezért itt az általános megoldás: Nem „kivonat” a számokat, akkor cserélje ki mindent, kivéve a számokat egy üres karakterlánc.

C #, ez nézne

string numbers = Regex.Replace(dirtyString, "[^0-9]", "");
Válaszolt 27/08/2009 01:11
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more