string pattern matching
5 отговора
248 прегледа
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!
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!
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_ на
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;

воля, воля... и пак воля...
$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;
воля, воля... и пак воля...
Re: string pattern matching
tuk [линк] ima mnogo hubava i lesna za chetene kniga za regexp. preporuchvam q na vseki.
__________________________
[линк]
__________________________
[линк]
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";
}
}
$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";
}
}