|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
Porskajete kak da stane tozi Regular Expression
|
|
Автор | ricki (Нерегистриран) |
Публикувано | 14.04.03 22:03 |
|
Kak moga da vzema opredelena stoinost ot string, koqto moje da bade ogradena s kavichki, a moje i da ne bade. Naprimer:
156,"1,234",567,845 ili 156,234,567,845
Polzvam sledniq regexp:
$input =~ /(.+),["](.+)["],(.+),(.+)/;
no kogato nqmam kavichki uslovieto se narushava i $1,$2,$3 i $4 sa prazni.
| |
Тема
|
Re: Porskajete kak da stane tozi Regular Expression
[re: ricki]
|
|
Автор | usermod (Нерегистриран) |
Публикувано | 14.04.03 23:45 |
|
ako tezi variables sa razdeleni s edin i susht symbol (kakto s zapetaiqta v sluchaiq), to udachno e da polzvash split. So:
my @array = split /,/, (1"2"3, 23, "3"2, "54");
| |
Тема
|
Re: Porskajete kak da stane tozi Regular Expression
[re: usermod]
|
|
Автор | ricki (Нерегистриран) |
Публикувано | 15.04.03 03:02 |
|
Tam e problema, che ne moga da gi splitna, zashtoto shte se razvali chisloto mejdu kavichkite.
Misli si za CSV file - comma delimited Excel data, kadeto hilqdite se otdelqt sashto sas zapetaiki i za da nqma obarkvane Excel gi slaga v kavichki:
100, "1,100",120,"22,100"
101,4,345,50
neka $input ima stoinostta na vseki red, togava ako polzvam split(/,/,$input) parvia red shte e greshen, a vtoriq ne
($one, $two, $three, $four) = split(/,/,$input);
rezultata shte bade:
$one => 100
$two => "1
$three => 100"
$four => 120
koeto nqma da e vqrno, zashtoto na men mi trqbvat 100; 1,100; 120; 22,100
Zatova sega polzvam:
$input =~ /(.+),"(.+)","*(.+)"*,"(.+)"/;
no neznam zashto $4 e prazen, kogato $3 ima kavichki, ako $3 nqma kavichki vsichko si e OK.
| |
Тема
|
Re: Porskajete kak da stane tozi Regular Expression
[re: ricki]
|
|
Автор | darklord (Нерегистриран) |
Публикувано | 15.04.03 23:29 |
|
Предлагам ти това решение:
# ако $x е това, което трябва да се преобразува:
$x = q(100, "1,100",120,"22,100") ;
$x =~ s/\"(\w+),(\w+)\"/\"$1:$2\"/g ;
$x =~ tr/,"/\t / ;
$x =~ s/:/,/g ;
@arr = split(/\t/, $x) ;
| |
Тема
|
Re: Porskajete kak da stane tozi Regular Expression
[re: darklord]
|
|
Автор | ricki (Нерегистриран) |
Публикувано | 06.05.03 01:34 |
|
Благодаря за помоща,
Това последното е много добра идея, но не в този й вид, защото се ограничавам с краен брой запетайки, т.е. ако имам милион трябва да добавя, $3 и $4 за милярд, а една и съща колона може да имам различен брой запетайки. Не мога да знам предварително колко са запетайките.
Иначе това за \t ми хареса и в краина сметка накарах клиента да праща Tab-delimited файлове вместо CSV формат и проблемите със запетайките отпаднаха.
| |
Тема
|
Re: Porskajete kak da stane tozi Regular Expression
[re: ricki]
|
|
Автор | edno momiche (Нерегистриран) |
Публикувано | 06.05.03 17:06 |
|
kolko ti e goliam file-a?
az imah sashtia problem, sas exportant file ot access, comma delimited
stoinostite se slagat v kavichki samo ako samite te sadurjat zapetaika.. mnogo kofti, kato pri men osven cifri imashe i literals i drugi bozi
no moia file ne beshe ogromen, i az si reshih problema taka:
2 pass-a:
1) smeniam delimitera (v/u celia file)
2) formatiram ostanaloto kakto mi triabva
za 1) mojesh da polzvash primerno:
perl -pi -e 's/(".*?")*,/\1|/g;' mydataexportfile
(mojesh da imash prazna parva kletka)
| |
Тема
|
Re: Porskajete kak da stane tozi Regular Expression
[re: ricki]
|
|
Автор | edno momiche (Нерегистриран) |
Публикувано | 06.05.03 17:10 |
|
:)) chak sega go prochetoh..
ami, hubavo e che mojesh da nalagash formata. az niamah tazi vazmojnost..
| |
Тема
|
Re: Porskajete kak da stane tozi Regular Expression
[re: edno momiche]
|
|
Автор | sas (Нерегистриран) |
Публикувано | 07.05.03 16:48 |
|
DBD::CSV??
| |
Тема
|
Re: Porskajete kak da stane tozi Regular Expression
[re: sas]
|
|
Автор | edno momiche (Нерегистриран) |
Публикувано | 07.05.03 17:36 |
|
za moite celi izpolzvaneto na tozi modul ili podoben beshe absolutno bezmisleno, osven tova e bugav, ili pone beshe predi okolo 3 godini.
ot tova koeto beshe napisalo momcheto mislia che na nego mu triabva da parse-va celia file, a ne da runva query-ta s/u nego
| |
Тема
|
Re: Porskajete kak da stane tozi Regular Expression
[re: ricki]
|
|
Автор | sas (Нерегистриран) |
Публикувано | 07.05.03 20:24 |
|
http://rousse.pm.org/book/cookbook/ch01_16.htm
-quote-
From Mastering Regular Expressions.
sub parse_csv {
my $text = shift; # record containing comma-separated values
my @new = ();
push(@new, $+) while $text =~ m{
# the first part groups the phrase inside the quotes.
# see explanation of this pattern in MRE
"([^\"\\]*(?:\\.[^\"\\]*)*)",?
| ([^,]+),?
| ,
}gx;
push(@new, undef) if substr($text, -1,1) eq ',';
return @new; # list of values that were comma-separated
}
-quote-
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|