讓我們假設我們有以下一系列的URI:URI正則表達式模式匹配
答:/用戶/ A/B/C
B:/用戶/ A/B/F/d
C:/用戶/ A/b/E
d:/用戶/ A/K/R
我需要在Python匹配除了規則B.所有規則正則表達式。因此,應該滿足所有以/user/a開頭的URI,但它應該排除以和結尾的URI。
非常感謝!
更新:路徑的段不是單個字符,而是整個單詞。例如d可以是「發送」。
讓我們假設我們有以下一系列的URI:URI正則表達式模式匹配
答:/用戶/ A/B/C
B:/用戶/ A/B/F/d
C:/用戶/ A/b/E
d:/用戶/ A/K/R
我需要在Python匹配除了規則B.所有規則正則表達式。因此,應該滿足所有以/user/a開頭的URI,但它應該排除以和結尾的URI。
非常感謝!
更新:路徑的段不是單個字符,而是整個單詞。例如d可以是「發送」。
基於極慢,確切的解決我的問題的答案是:
(?!.*d)\/user/a/.*
注意,d和對應於整個單詞。因此,一個示例是:
(?!.*send)\/user/myapp/.*
如何像:
^/user/a/.*[^d]$
讀爲「開始/用戶/ A /,那麼任何數目的其它字符,然後最後的字符,它不能是d
也許只是更清晰的使用方法:
a = '/user/a/b/f/d'
b = s.strip('/').split('/')
if b[:2] == ['user', 'a'] and b[-1] != 'd':
pass # whatever
或者,如果你通過/
的不是分裂,那麼:
if a.startswith('/user/a') and not a.endswith('d'):
pass # whatever
嘗試了這一點:
(?!.*\/d)\/user\/a.*
- >提前負的樣子斷言,基本上說,它不與/ d
結束教人以漁(*/d?!):
輸入測試字符串和玩的正則表達式:)
第二種方法易於閱讀且有意義。鑑於對問題的簡單描述,我認爲即使段可能是文字,也不會涵蓋任何角落案例。這是一個列表理解版本 - https://www.refheap.com/paste/5621/raw –