2014-02-27 50 views
-2

我有一個像'/whatever/whatver/whatever/v{int}' 作爲字符串顯示字符串,字符串組成部分前綴'/whaterver'的,串有前綴或沒有,要麼是確定的,最後的部分是/v{int} 我寫了一個普通表達式(^[/][a-zA-Z]+)*/v[0-9]+,(^[/][a-zA-Z]+)*表示前綴可以出現與否,/v[0-9]+表示與最後一部分匹配。想在正則表達式幫助

我想表達能夠完全匹配的字符串,但事實並非如此。

任何人都可以幫助我嗎?

+0

(^ [/] [A-ZA-Z] +)/ V [0-9] +您正在使用的編程語言不匹配多個斜線 – Simson

+1

?你能舉一個具體的例子嗎? –

+0

@Jack這不是關於編程語言,而是關於正則表達式的標準。 –

回答

0

首先,爲什麼/字符的否定?其次,我可以看到你可以有多個前綴,所以你還必須檢查前綴的多基數(請參閱我添加的*通配符)。

這個表達式匹配([/][a-zA-Z]+)*/v[0-9]+你的輸入,也沒有前綴匹配的輸入。

編輯

如果你想保持開始的行標記(即使它,如果你想精確匹配是多餘的),你需要排除它形成重複塊(標有*通配符),因爲您不希望引擎在每個前綴中查找新的行開頭。

^([/][a-zA-Z]+)*/v[0-9]+ 
+3

^不在[]內,因此它不是否定,而是「在行首」。 –

+0

@Andrei Nicusan我想要完全匹配,因爲我不想在開始時看到很多斜線,就像'///whatever/whatever/.../v{int}'。我在http://regexpal.com/中粘貼正則表達式,它可以匹配上面的字符串。解決了我的問題。謝謝 – user3231931

+0

它也是我通常使用的regexpal。 –

0
echo "/whatever/whatver/whatever/v1654" | grep -E '^/?([a-zA-Z]+/)+v[0-9]+$' 
/whatever/whatver/whatever/v1654