webForumDet fria alternativet

Reguljärt uttryck

Webbutveckling

11 svar · 603 visningar · startad av fredriksk

Medlem sedan maj 2001211 inlägg
Frågan#1

Jag lyckas aldrig få till de här eländiga reguljära uttrycken. Så nu vänder jag mig till er, kära kollegor.

hur säger man på (på reguljära uttryck språket):
Alla strängar som INTE innehåller delsträngen "index" (utan citattecken)?

Medlem sedan maj 2001211 inlägg
#2

eller kanske ännu mer på prick vad jag behöver är följande.

Alla strängar som är på formen
[vad som helst]/[mapp]

ex.
http://www.myhost/myfolder
http://myhost/myfolder

Men inte
http://www.myhost/minfil.html
http://www.myhost/minfil.xhtml

Medlem sedan sep. 20005 700 inlägg
#3

Flyttad från Programmering - Övrigt.

Medlem sedan dec. 20025 483 inlägg
#4

Du kan inte med regexp ta reda på huruvida minfil.html är en mapp. Det får du i stället göra med något bibliotek som programmeringsspråket tillhandahåller.

Red./ För att hitta alla strängar som inte innehåller index kan du använda

^((?!index).)*$
Medlem sedan maj 2001211 inlägg
#5

...fast att ta reda på om det är en mapp kan man ju tolka som att:

"Uttrycket efter / (eller mellan /) inte innehåller någon .(filändelse)" eller?

Alltså

[nånting]/[sträng som inte innehåller .filändelse]/

Medlem sedan dec. 20025 483 inlägg
#6

På både Windows och Linux är det ju möjligt att döpa mappar till foo.bar.

Medlem sedan maj 2001211 inlägg
#7

... och om vi bortser från den möjligheten och antar att vi endast accepterar "mappar" på formen [a-z, A-Z]] (mappar är ju lite missvisande kanske för det är ju inte mappar i vanlig betydelse (folder med filer i), vi pratar om webblänkar och då behöver ju inte mappen finnas fysiskt).

Alltså:
Hur fångar jag upp strängar på formen
en_ointressant_början_på_en_URL/enSträngMedTecken
en_ointressant_början_på_en_URL/enSträngMedTecken/enTillSträngMedTecken

men inte:
en_ointressant_början_på_en_URL/index.html
en_ointressant_början_på_en_URL/index.xhtml?id=32

Medlem sedan dec. 20025 483 inlägg
#8
^http://[^/]+/(?:[a-z]+/)*[a-z]+$

Alternativt måste du escape:a "/"

^http:\/\/[^\/]+\/(?:[a-z]+\/)*[a-z]+$

Slå även på flaggan för case insensitive.

Medlem sedan maj 2001211 inlägg
#9

jag tackar för detta men den verkar inte fungera.

Inte på länkar som ser ut som sisåhär:

http://www.minhost.se/enFiktivMapp

Medlem sedan dec. 20025 483 inlägg
#10

Inlägget ovan har blivit redigerat :)

Medlem sedan jan. 2007177 inlägg
#11
^http.*\/[[:alpha:]]*$

eller

^http.*\/[[:alnum:]]*$

om även 0-9 är tecken som kan förekomma bland dina "mappnamn"

Medlem sedan maj 2001211 inlägg
#12

Peter S skrev:

Inlägget ovan har blivit redigerat :)

Klockrent!
Tackar och bockar! Nu är allt frid och fröjd :-)

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)