我正在嘗試匹配如下內(nèi)容以匹配傳入的動(dòng)態(tài) API 路徑。*這是一個(gè)精確的字符串比較,但是應(yīng)該忽略和匹配對(duì)應(yīng)于通配符的傳入字符串位置,因?yàn)樗梢允侨魏螙|西。/v1/*/test應(yīng)該匹配 /v1/jnjnjnjn/test 但不應(yīng)該匹配/v0/knknkk/test/test/v1/\*/test/\* 應(yīng)該匹配 /v1/niniiuhi/test/njnjnj 但不應(yīng)該匹配/v1/niniiuhi/test/njnjnj/knknkmkm我試過下面的。re.search('v1/.*/test', 'v1/vhvhv98988/test/test')但它同時(shí)適用于v1/njnjnj/test和v1/njnjnj/test/test。任何幫助將不勝感激?提前致謝
1 回答

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