CSIRT.CZ, český národní CERT provozovaný na základě veřejnoprávní správní smlouvy společností CZ.NIC, shrnuje patnáct let svého fungování pod tímto sdružením: CSIRT.CZ – 15 let ve sdružení CZ.NIC.
Commodore OS Vision (Wikipedie) byl vydán v nové verzi 3.0. Jedná se o linuxovou distribuci určenou pro fanoušky značky Commodore. Předinstalována je na počítačích Commodore 64x.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 208. brněnský sraz, který proběhne v pátek 25. dubna od 18:00 ve studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1.
Ve svém článku Getting Forked by Microsoft popisuje autor programu Spegel svoji nepříjemnou zkušenost s firmou Microsoft. Firma ho kontaktovala a zpočátku to vypadalo, že by mohlo jít o oboustranně prospěšnou spolupráci, autor tedy ochotně odpovídal na jejich otázky ohledně architektury programu a pomáhal jim ho zprovoznit. Následně komunikace ze strany Microsoftu utichla. Autor předpokládal, že zřejmě došlo ke změně priorit a firma
… více »Společnost Notion Labs stojící za softwarovou platformou pro spolupráci Notion (Wikipedia) oficiálně představila (YouTube) poštovního klienta Notion Mail. Aktuálně funguje pouze nad Gmailem.
Byla vydána nová verze 9.12 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Ubuntu 25.10 bude (𝕏) Questing Quokka (pátrající klokan quokka).
Ubisoft uvolnil zdrojové kódy softwaru Chroma pro simulaci barvosleposti pro vývojáře počítačových her. K dispozici jsou na GitHubu pod licencí Apache 2.0.
Defold (Wikipedie) je multiplatformní herní engine. Nejnovější verze je 1.10.0. Zdrojové kódy jsou k dispozici na GitHubu. Licence vychází z licence Apache 2.0.
while ($xmlretezec =~ /(<NewsItem>[\s\S]+<\/NewsItem>)/g) {
$counter++;
$pole[$counter] = $1;
};
<NewsItem>....</NewsItem><NewsItem>+++++</NewsItem>
</NewsItem>
nechat probehnout cyklus a pak pokracovat, kde skoncil - tj za prvnim vyskytem </NewsItem>
a to opakovat az do konce souboru...
Predem diky za jakkoukoliv reakci, je mi jasny ze zrejme nechapu jak to funguje :-/
soubor.xml
třeba tento obsah
<xml> <NewsItem>prvni</NewsItem> <NewsItem>druhy</NewsItem> <NewsItem>treti</NewsItem> </xml>pak by se dal parsovat třeba tímto
#!/usr/bin/env python from elementtree.ElementTree import * root = ElementTree(file='soubor.xml') for news in root.getroot(): print news.texta výsledek by byl
prvni druhy tretiKdybys podrobněji popsal strukturu tvého xml souboru, dalo by se to napsat přímo na míru.
while($xmlretezec =~ s#(<NewsItem>[\s\S]+</NewsItem>)##) { $counter++; $pole[$counter] = $1; }nebo pokud se zbavím citové vazby na cyklus while
for($counter=0;$xmlretezec =~ s#<NewsItem>[\s\S]+</NewsItem>##;$counter++) { $pole[$counter] = $1; }což je mnohem lepší řešení, protože má o jeden řádek méně :))) (vtip)
Musim vas zklamat, ale nemate pravdu. Problem je v defaultni zravosti regexpu. Pokud tuto neomezite, coz jste neudelal, tak kod fungovat nebude. Navic jste v prikladu s cyklem for opomenul rici PERLu aby si nalezenou shodu zapamatoval. Nasledujici kod by uz mel fungovat, ma vsak jednu vlastnost ktera vy se nemusela byt zcela zadouci a to, ze modifikuje puvodni text v promenne $xmlretezec - vsechny nalezene shody proste z puvodniho textu vyrizne...
for($counter=0;$xmlretezec =~ s#(<NewsItem>[\s\S]+?</NewsItem>)##;$counter++) { $pole[$counter] = $1; }
Problem tkvi v tom, ze regularni vyrazy v PERL jsou zrave a snazi se najit co nejdelsi shodu, takze pro takto zadany regexp vezmou prvni znacku <NewsItem> a pak vsechno az po posledni znacku </NewsItem> kterou v promenne $xmlretezec najde. Staci omezit tuto defaultni zravost perlu pridanim '?' za '+' a kod se bude chovat tak jak ocekavate.
while ($xmlretezec =~ /(<NewsItem>[\s\S]+?<\/NewsItem>)/g) { $counter++; $pole[$counter] = $1; }
A pokud to ma jen prijit na konec nejakeho pole, tak to jde i takto
push @pole, $xmlretezec =~ /(<NewsItem>[\s\S]+?<\/NewsItem>)/g;
modifikátor:
s
Treat string as single line. That is, change ``.'' to match any character whatsoever, even a newline, which it normally would not match.
výsledok:
while ($xmlretezec =~ /\G.*?(<NewsItem>.+?<\/NewsItem>)/gs) { push @pole, $1; };
while ($xmlretezec =~ /(<NewsItem>.+?<\/NewsItem>)/gs) { push @pole, $1; };Viz:
$ perl -le '$/=undef;$a=<>;while($a=~/(<NewsItem>.+?<\/NewsItem>)/gs){print $1}' <<EOF <xml> <NewsItem>pr vni</NewsItem> <NewsItem>druhy</NewsItem> <NewsItem>tr et i</NewsItem> </xml> EOF
while ($xmlretezec =~ /(<NewsItem>(.+?)<\/NewsItem>)/gs) { push @pole, $1 if $2; };
.*?
, keď element obsahuje text s dĺžkou 0.
python << EOF from elementtree.ElementTree import * xml = ''' <xml> <NewsItem attr='bleble'>prvni</NewsItem> <NewsItem >dr uhy<tento_tag_nechci>ignoruj</tento_tag_nechci></NewsItem> <NewsItem>treti</NewsItem> </xml> ''' elem = fromstring(xml) pole = [news.text for news in elem.getiterator('NewsItem')] print pole EOFUvádím výsledek pro ty, kterým je proti srsti vzít do myši úplně cizí kód a strčit si ho do terminálu
['prvni', 'dr\n uhy', 'treti']
['prvni', 'dr\n <tento_tag_nechci>ignoruj</tento_tag_nechci>uhy', 'treti']keď už
python << EOF from elementtree.ElementTree import * import re xml = ''' <xml> <NewsItem attr='bleble'>prvni</NewsItem> <NewsItem >dr uhy<tento_tag_nechci>ignoruj</tento_tag_nechci></NewsItem> <NewsItem>treti</NewsItem> </xml> ''' elem = fromstring(xml) for e in elem.getiterator(): print (e.tag, e.text) EOFVýsledek:
('xml', '\n ') ('NewsItem', 'prvni') ('NewsItem', 'dr\n uhy') ('tento_tag_nechci', 'ignoruj') ('NewsItem', 'treti')
že se ptal na implementaci v perlu což výslovně uvedl v přímo v titulku dotazu.To že J.M. neustále u všech hledaných řešení doplňuje i o svoje řešení v Pythonu, to vidím jako plus a vůbec bych ho od toho neodrazoval. Jestli dotazující řešení v Pythonu nepoužije, nevadí (může to mlčky přehlédnout). Ale pro ostatní "přihlížející" návštěvníky to může být zajímavá ukázka a alternativa, jak to lze řešit i jinak. Takže jen tak dál, i když je požadavek třeba na Perl, proč si neprohlédnout i jiná řešení ...
<NewsItem><b>Category:</b> <i>title</i></NewsItem>a podobne, ako príklad to snáď postačuje
Tiskni
Sdílej: