perl regular expression

Sziasztok!

Tudna valaki segiteni nekem a kovetkezo regularis kifejezesek osszeallitasaban? Nagy hianyossagom, hogy nem all tul kozel hozzam a regularis nyelv. :(

1. olyan string amiben legalabb 3 szamjegy talalhato es nincs benne space karakter.
2. olyan string amiben nincs a es b karakteren kivul mas
3. olyan string ami betu es szam karakteren kivul mast is tartalmaz

ezekre illezkedo regexp kifejezeseket akarok osszehozni.

koszonom a segitseget.

T

Hozzászólások


1) ^[^ ]*[0-9][^ ]*[0-9][^ ]*[0-9][^ ]*$
2) ^[ab]+$
3) - no itt a kérdést se értem

Én az egyszerűség okán nem sztringben, hanem teljes sorban gondolkoztam, ezt jelzi a ^valami$ forma (sor eleje/sor vége). A 2.-nál ezen kívül nem foglalkoztam azzal, hogy jó-e neked a nagybetű is, ha igen, akkor értelemszerűen odaírandó az is. Ja, és a Perl-féle regexp (PCRE) helett használtam a kicsit több szoftver által kezelt (noha szűkebb extended regexp-et ERE)

koszi a segitseget! jo latni a megoldast, igy egyszerubben megertem.
a harmadiknal csak annyi volt, hogy ha a megadott karaktersorozatok kozott van olyan ami tartalmaz nem csak szamot es betut. Ezeket kell megjeleniteni. En igy oldottam meg:

[\da-zA-Z]*[^\da-zA-Z]+[\da-zA-Z]*

on all of them solvable

Vagy az adott programozási nyelven a "match", mint "string" hossza tartalmazza ezt az információt.
Ehhez valahogy hozzá lehet férni. Változó, hogy hogyan.
Pl. perlben:
$&
The string matched by the last successful pattern match (not counting any matches hidden within a BLOCK or eval() enclosed by the current BLOCK). (Mnemonic: like & in some editors.) This variable is read-only and dynamically scoped to the current BLOCK.

Na ennek a hosszát kell nézni.