string pattern matching

5 отговора 248 прегледа
#1

string pattern matching

pozdravi na vsichki

pochnah da izuchavam kak da matchvam stringove na perl, no tova izglezhda uzhasno pone v nachaloto

kak naprimer moga da razbera dali daden string sadarzha chislata 1 2 i 3
(i trite chisla triabva da gi ima v tozi string, nezavisimo kude se namirat)

edinia nachin e prosto:
$mystring = "hi1kak si 3 dobre sum 2 extra e 1";
foreach $test ("1","2","3")
{
if ($mystring =~ /$test/)
{
#good

}
else
last;
}

-------
i oshte neshto:
kak moga da razbera primerno, dali edin string ima CHETEN broi cifrata 1 primerno
tova puk izobshto ne mi e iasno :)

mersi!

Отговор
в отговор на nickita_ #2

Re: string pattern matching

kak da razbera dali edin string e poveche ot 6 znaka primerno i niama nito "1" "2" "3" "4" "5" "6" "7" "8" "9" ili "0" v nego

Редактирано от nickita_ на

Отговор
в отговор на nickita_ #3

Re: string pattern matching

if(length($string) > 6 && $string =~ /[^0-9]/) {
...
}

Отговор
в отговор на DEEM #4

Re: counting characters in a string

Бройкай срещанията за един знак така:

$string = "ThisXlineXhasXsomeXx'sXinXit";
$count = ($string =~ tr/X//);
print "There are $count X characters in the string";

ако търсиш двойки (или повече) числа (23 например) трябва да завъртиш while и да не режеш (без tr):

$string = "-9 55 48 -2 23 -76 4 14 -44";
while ($string =~ /-\d+/g) { $count++ }
print "There are $count negative numbers in the string";

или така:

$count = () = $string =~ /-\d+/g;



воля, воля... и пак воля...
Отговор
в отговор на nickita_ #5

Re: string pattern matching

tuk [линк] ima mnogo hubava i lesna za chetene kniga za regexp. preporuchvam q na vseki.

__________________________
[линк]
Отговор
в отговор на nickita_ #6

Re: string pattern matching

Ako $mystring sadarja nyakakwa cifra to imame sawpadenie
$mystring = "hi1kak si 3 dobre sum 2 extra e 1";
if ($mystring =~ /\d/)
{
#good

}
else
last;
################################
#dokato ima sawpadenie sas cislo waw zadadeniya string
#proweryawa dali cisloto e rawno na 1 i ako e taka se uwel
#$counter s edenica i t.n.
$mystring = "hi1kak si 3 dobre sum 2 extra e 1";
while (/\d/g) {
if ($_ eq 1) {
$counter++;
}
else {
print "1 not found\n";
}
if (mod ($counter/2) eq 0) {
print "1 se sadarja ceten broj pati\n";
}
}

Отговор