Jump to content
php.lv forumi

Regulārā izteiksme


Sliipeetais

Recommended Posts

Man ir dots skaitlis (no 1 līdz 15) un sekojoša virkne - kautkas(1);kakis(2);suns(3);maaja(4); u.t.t. līdz 15.

 

Ar kādu regulāro izteiksmi, zinot skaitli, es varu iegūt tam atbilstošo vārdu? Piem., es zinu skaitli "2", rezultātā izdod "kakis".

Edited by Sliipeetais
Link to comment
Share on other sites

Venom, ja tas pārāk neapgrūtina, lūdzu izskaidro soli pa solim, ko kurš katrs simbols šajā r. i. paveic.

 

Esmu mācījies regulārās izteiksmes (pašmācībā, http://www.regular-expressions.info), taču pagaidām vēl par šo tēmu man nav nostrādājis kaut kāds loģikas klikšķis.

Edited by Sliipeetais
Link to comment
Share on other sites

dotajā variantā es tāpatās pielietotu masīvu:

$str="kautkas(1);kakis(2);suns(3);maaja(4)...";
$kovaig=4;
$mas=explode(";",$str);
$tmp=$mas[$kovaig];
$tmp=explode('(',$tmp);
echo $tmp[0]; //izdos kakis

 

mazliet pamainīts preg.variants:

'#;?([^\(;]+)\('.$number.'\)#'

 

nozīmē:

## "separatori", var izmantot pierastos /

 

;? - var būt vai arī nebūt priekšā semikols

([^\(;]+) vismaz viens simbols kas nav "(" (lai aizietu "līdz (") vai ";" (lai sāktu no ";" uz priekšu), ja iespējams, atkārtoti, tas viss tiek pārtverts iekš $1 {sīkāk: [] apzīmē simbolus kopu, +, ka simbols no kopas var atkārtoties vismaz vienu reizi, ^ priekšā simbolu kopai apzīmē "ne" - jebkurš simbols izņemot }

\( pirms numura "("

vajadzīgais nummurs

pēc numura ")" citādi uz "2" meklēšanu kopētu arī (23)

 

Ja eclubs piecelsies, var pamācīties iekš VenRExp

Link to comment
Share on other sites

kāpē? ja mazliet pielabo...

$str="kautkas(1);kakis(2);suns(3);maaja(4)...";
$kovaig=4;

$mas=explode(";",$str);
/* mas = array (kautkas(1), kakis(2), suns(3) ...) */
$correct=array();
while($tmp=array_shift($mas))
{
//$tmp=text(1)
$tmp=str_replace('(','|',$tmp);//$tmp=text|1)
$tmp=str_replace(')','|',$tmp);//$tmp=text|1|
$tmp=explode('|',$tmp);
//$tmp=array( text, 1, '' )
$correct[$tmp[1]]=$tmp[0]; //$correct[number]=text
}
echo $correct[$kovaig];

 

Ja vajag izvadīt vairākus "kovaig", tad šis variants varētu būt efektīgāks par preg.

Link to comment
Share on other sites

×
×
  • Create New...