我正在嘗試匹配如下內容以匹配傳入的動態 API 路徑。*這是一個精確的字符串比較,但是應該忽略和匹配對應于通配符的傳入字符串位置,因為它可以是任何東西。/v1/*/test應該匹配 /v1/jnjnjnjn/test 但不應該匹配/v0/knknkk/test/test/v1/\*/test/\* 應該匹配 /v1/niniiuhi/test/njnjnj 但不應該匹配/v1/niniiuhi/test/njnjnj/knknkmkm我試過下面的。re.search('v1/.*/test', 'v1/vhvhv98988/test/test')但它同時適用于v1/njnjnj/test和v1/njnjnj/test/test。任何幫助將不勝感激?提前致謝
1 回答

德瑪西亞99
TA貢獻1770條經驗 獲得超3個贊
如果*
應該只匹配一個組件,我們需要/
從匹配中排除,或者特別包括那些允許的字符。
re.search(r'^/v1/[^/]*/test$', '/v1/jnjnjnjn/test')
/
將匹配通配符組件中除 a 以外的任何內容。re.search(r'^/v1/[a-z0-9_-]*/test$', '/v1/jnjnjnjn/test')
將匹配通配符組件中的小寫字母、數字、下劃線和破折號。
通常第二種選擇更安全,但這取決于您的要求。
在這兩種情況下,您都應該將搜索錨定^
在開頭和$
結尾,除非您確實想要搜索子字符串。
添加回答
舉報
0/150
提交
取消