Hjelp med regulære uttrykk...

Hjelp med regulære uttrykk...

Innleggav sturla » ons 15.07.2009 14:15

Hei. Jeg sitter å legger inn dokumenter i en CMS kalt Confluence. Litt tidlig ennå, men jeg vil kanskje tro andre løsninger kunne ha vært bedre til det vi skal bruke den til. Men nok om det...

På ulike sider skal jeg legge til "attachments", eller vedlegg / filer som f.eks. bilder, word dokumenter, pdf'er osv. Problemene oppstår når jeg skal liste disse vedleggene på siden. Da legger CMS løsningen opp til at du må kunne regulære uttrykk! Hvis du ønsker å sortere filene eller organisere de på et vis.

Hvis det er lenket en gruppe dokumenter til siden, kan disse sorteres alfabetisk, og grupperes under forbokstav slik:

A
{attachments:patterns=A.*pdf|sortBy=name}
B
{attachments:patterns=B.*pdf|sortBy=name}

Osv...

Det står noe om dette her: http://confluence.atlassian.com/display/DOC/Displaying+List+of+Attachments+in+a+Page#DisplayingListofAttachmentsinaPage-UsagewiththeWikiMarkupEditor

Men hvordan kan jeg foreksempel liste opp dokumentene etter gruppe de hører hjemme i? Eksempel:

Dokumenter:

IS_gullpinne.pdf
IS_kroneis.pdf
SJOK_Snikkers.pdf
SJOK_Mars.pdf
IS_lollypop.pdf
SJOK_Japp.pdf

Oppgave:
Sortere og legge i gruppene ISKREM og SJOKOLADE

Noen som kan noe om regulære uttrykk?

Brukerens avatar
medlem i 232 måneder
 

Re: Hjelp med regulære uttrykk...

Innleggav TO » ons 15.07.2009 16:06

Testskript:
Kode: Merk alt
liste="
IS_gullpinne.pdf
IS_kroneis.pdf
SJOK_Snikkers.pdf
SJOK_Mars.pdf
IS_lollypop.pdf
SJOK_Japp.pdf
"
echo "$liste" | awk '/^IS.*_.*pdf/'
echo "$liste" | awk '/^SJOK.*_.*pdf/'
exit

Resultat:
IS_gullpinne.pdf
IS_kroneis.pdf
IS_lollypop.pdf
SJOK_Snikkers.pdf
SJOK_Mars.pdf


Se http://en.wikipedia.org/wiki/Regular_ex ... xpressions

Bittelitt forklaring for de som er brukt over:
^ -ankrer mot begynnelsen av streng, f.eks. ^IS (starter med IS)
. - jokertegn, matsjer en karakter (hvilken som helst)
? - null eller kun en av forrige karakter
* - null eller flere av forrige
+ - en eller flere
medlem i 213 måneder
 

Re: Hjelp med regulære uttrykk...

Innleggav geirendre » ons 15.07.2009 18:15

Litt usikker på hva du mener med
Sortere og legge i gruppene
...
For å sortere etter gruppe, gitt at det forran "_" er gruppen,
så kan sort gjøre det ganske enkelt:
Kode: Merk alt
geir@ubuntu:~$ cat snopliste.txt
IS_gullpinne.pdf
IS_kroneis.pdf
SJOK_Snikkers.pdf
SJOK_Mars.pdf
IS_lollypop.pdf
SJOK_Japp.pdf
geir@ubuntu:~$ sort -t_ snopliste.txt
IS_gullpinne.pdf
IS_kroneis.pdf
IS_lollypop.pdf
SJOK_Japp.pdf
SJOK_Mars.pdf
SJOK_Snikkers.pdf

Dersom du mener å flytte filer som heter f.eks. Mars.pdf til en mappe kalt SJOK,
så kansje noe a'la dette:
Kode: Merk alt
awk -F'_' '{mappe=$1;fil=$2;print "mv "$0" "$1"/"$2 }' snopliste.txt

kan gjøre trikset.
Dette kan pipes videre til sh for å utføre selve flyttingen.
Kode: Merk alt
awk -F'_' '{mappe=$1;fil=$2;print "mv "$0" "$1"/"$2 }' snopliste.txt | sh


Mulig jeg er helt på bærtur mtp hva du er på jakt etter.... :-!

Edit:
Eller er det noe slikt du mener:
Kode: Merk alt
{attachments:patterns=SJOK_.*,IS_.*}

Her er det regexp i en komma separert liste slik som i ditt eksempel.
:-P

Erfaren
Brukerens avatar
medlem i 230 måneder
 

Re: Hjelp med regulære uttrykk...

Innleggav ak » ons 15.07.2009 19:27

Confluence ja... bare vent til du kommer oppi noen hundre tusen revisjoner og et par hundre brukere, jeg har brynet meg skikkelig på bugs i et par av de inkluderte plugins'ene.

Regular expressions kan ikke sortere, kun filtrere.

Men hvis filene virkelig har slike navn, så bør egentlig sortBy=name gjøre susen. Hvis du vil ha overskrifter i mellom må du gjøre det manuelt:

Kode: Merk alt
Is:
{attachments:patterns=IS*|sortBy=name}

Sjokolade:
{attachments:patterns=SJOK*|sortBy=name}

Administrator
Brukerens avatar
medlem i 237 måneder
 

Re: Hjelp med regulære uttrykk...

Innleggav sturla » ons 15.07.2009 21:27

Supert! Takk for alle svarene. Var litt vanskelig å uttrykke hva jeg var ute etter, men dere har alle fattet poenget og gitt meg gode svar.

AK, har du brukt Confluence? Hva mener du med noen hundre tusen revisjoner? Ikke helt sikker på om jeg skjønner fagspråket, hehe.

Hvor bra er egentlig Confluence? Politiet har valgt dette til håndtering av en viss type dokumenter. Tilsammen sikkert noen titusen dokumenter. Disse revideres fra tid til annen. Tidligere har man lagret disse lokalt på disk. Nå har endelig også etaten vår skjønt at CMS løsninger er fine greier. Men det tok sin tid. Når det gjelder antall brukere med mulighet for å legge inn dokumenter, snakker vi kanskje om noen hundre. Men alle skal kunne lese disse.

Regular expressions kan ikke sortere, kun filtrere.

Jeg tror jeg har forstått det. Filene får de navnene jeg bestemmer de skal ha. Og får å kunne filtrere ut og deretter liste de slik jeg vil, må jeg gi de navn slik at det lar seg gjøre. Derav analogien med is og sjokolade ;)

Men la oss si at jeg blant en liste av filer skal finne alle filer som omhandler bensinstasjoner, som f.eks. filer som denne:
Kode: Merk alt
Statoil bensinstasjon i Langneset.pdf

Dette blant andre filer som inneholder en liknende betegnelse. Blant filene kan det finnes filer omhandlende bensinstasjoner (som i filen over), dagligvarebutikker, banker, kjøpesentre, osv... Filnavnene må da selvfølgelig reflektere dette som den over gjør det. Lar det seg gjøre, eller burde jeg lage en slags "tag" først i filnavnet som beskriver nøyaktiv hvilken gruppe filen tilhører. Sånn som dette:
Kode: Merk alt
BENSIN_Statoil bensinstasjon i Langneset.pdf

Og deretter lete etter slike filer med:
Kode: Merk alt
{attachments:patterns=BENSIN*|sortBy=name}

Brukerens avatar
medlem i 232 måneder
 

Re: Hjelp med regulære uttrykk...

Innleggav ak » ons 15.07.2009 21:45

"revisjoner" var tatt direkte fra engelsk. Versjoner , eller utgaver, av en side.

Jeg har jobbet litt med http://geoserver.org , som fortsatt kjører Confluence.


CMS er vel og bra, men du havner fort i trøbbel når alt innholdet er i opplastede filer. Da bør du egentlig heller ha en siden per vedlegg, og så er siden tagget / kategorisert riktig, slik at alle de normale søkeverktøyene fungerer. Men da blir det en del mere arbeid, så det er vel ikke så aktuelt.

knowledgretree er kanskje bedre egnet, men når det er sagt så er Confluence helt greit i et litt større miljø hvor man må koble inn en eller flere brukerdatabaser osv. Hvis man har noen som kan utvikle i Java så går det også rimelig greit å utvikle plugins.

Jeg ville vel antageligvis ha valgt en slags sti, så navnet og så lagt på tags bakerst. Skill tags med noe annet det du bruker for resten, f.eks. hvis du bruker bindestrek "sted_navn-tag1-tag2.pdf" så kan du søke etter "-tag1".

Administrator
Brukerens avatar
medlem i 237 måneder
 

Re: Hjelp med regulære uttrykk...

Innleggav TO » ons 15.07.2009 23:07

Med referanse til:
Kode: Merk alt
Statoil bensinstasjon i Langneset.pdf

som med merarbeid blir:
Kode: Merk alt
BENSIN_Statoil bensinstasjon i Langneset.pdf

Her står jo allerede stikkordet i det originale filnavnet, og man kan lettvint finne denne fila ved bruk av et egnet regulæruttrykk, eksempel:
BENSIN|bensin|[Bb][Ee][Nn][Ss][Ii][Nn]|diesel

Som dette illustrerer så kan en kjekk konvensjon være at kun små bokstaver brukes i filnavn. Videre at filnavnet indikerer alle relevante stikkord. Da vil kategoriseringen skje ved tilpassede regulæruttrykk, som selsagt må matsje indikerte stikkord.

Note:
{attachments:patterns=BENSIN*|sortBy=name}
Hvis dette er regexp så forteller denne * at det er ingen eller flere N. For eksempel så vil dette matsje både BENSI og BENSINNNN. Jeg ville skrevet kun BENSIN
medlem i 213 måneder
 

Re: Hjelp med regulære uttrykk...

Innleggav sturla » ons 15.07.2009 23:47

Hva med denne? Er det slik du mener det blir? Vil alle bensinstasjonene listes da? Så lenge bensin er inkludert i filnavnene?
Kode: Merk alt
{attachments:patterns=BENSIN|bensin|[Bb][Ee][Nn][Ss][Ii][Nn]|sortBy=name}

Brukerens avatar
medlem i 232 måneder
 

Re: Hjelp med regulære uttrykk...

Innleggav TO » tor 16.07.2009 0:59

{attachments:patterns=BENSIN|bensin|[Bb][Ee][Nn][Ss][Ii][Nn]|sortBy=name}

'|' er klassisk OR i slik sammenheng, men utfra den dokumentasjonen du lenket til (eksempel 1) så ser det ut som om komma ',' brukes her for dette. Mao. så skal det muligens skrives slik:
{attachments:patterns=BENSIN,bensin,[Bb][Ee][Nn][Ss][Ii][Nn]|sortBy=name}

Slik jeg forstår dokumentasjonen så burde da alle filnavn hvor bensin er nevnt bli listet. Du får teste.
medlem i 213 måneder
 

Re: Hjelp med regulære uttrykk...

Innleggav geirendre » tor 16.07.2009 1:14

Det blir mindre pes om den støtter "case-insensitive" regexp dvs. med (?i)søkeord(?-i) flaggene, slik:
Kode: Merk alt
{attachments:patterns=(?i)bensin(?-i)|sortBy=name}

Dette skal (i teorien) matche bensin uansett små eller store bokstaver.

Det vil jo da matche Bensin uansett plassering i strengen også,
og det er kansje ikke ønskelig?

Erfaren
Brukerens avatar
medlem i 230 måneder
 


Returner til Andre



Hvem er i Forumene

Registrerte brukere: Google [Bot]