2017-06-21 104 views
0

所以我是新來的正則表達式,並試圖寫一個正則表達式將匹配這樣的:正則表達式 - 禁止某些字符串

example.com/some-url-text-here/ 

而不是像

example.com/some-url-text/but-also-more-than-two-slashes/ 
example.com/text-here/one-slash-too-many/two-slashes-too-many/ 

基本上,我想它匹配一個網址,其中包含一些不超過兩個/string-separated-by-dashes

我嘗試了幾個不同的東西像negative look aroundnot ....我想最後一件事情是這樣的:

example\.com/[a-zA-z]*-*/ 

[a-zA-z]*-*匹配類似text-here,但我不能讓它匹配/text-here/。在這種情況下我做錯了什麼?

回答

1

您正則表達式不工作的原因是因爲你擁有了它的順序

example\.com/[a-zA-z]*-*/ 

這是查找文字UPPER和更低,然後連字符。只是包括像這樣的括號中的連字符:下面lookahead

example\.com/[a-zA-z-]*/ 
+0

哦......這是我的一個愚蠢的錯誤。謝謝澄清! – ocean800

1

如果你有使用regexen的問題,你可以簡單地split各地"/",確保該元素是不是空的(可能除了最後一個),而且有不超過3個元素。

可以使用-1作爲參數,以確保最後一個元素被分裂:

>>> "some/url//".split("/", -1) 
['some', 'url', '', ''] 
+0

沒想到的方法,謝謝你的答案! – ocean800

2

嘗試正則表達式,它會斷言沒有更多的反斜線來第二

example\.com\/[a-zA-Z-]+[a-zA-Z]\/(?!.*\/)

demo

+0

啊,感謝您展示它如何與超前合作!對於上面的正則表達式,我只是把'$'放在末尾:) – ocean800

相關問題