[英]Conditional Python regex and named group
我有一個字符串:
/foo/bar
和以下正則表達式:
/(?P<g1>.*)/(?P<g2>.*)$
該字符串由模式匹配,並且捕獲了兩個組:
g1 =富
g2 =條
如何強制進行可選比賽?
我需要將“ / bar”捕獲到g1 =“ bar”(但不是/ bar /),如果沒有第二組可以匹配?
(使用regex101進行測試)
謝謝
您需要字符串錨^
的開頭,以將字符串限制為僅包含2個slahses。 正如Avinash Raj指出的那樣,您需要使正則表達式的某些部分為可選。
^/(?P<g1>[^/\n]*)/?(?P<g2>[^/\n]*)?(?<!/)$
觀看演示
\\n
僅在多行模式下才需要,因此[^/]
不能與換行符匹配。
正則表達式說明 :
^/
-字符串和文字的開頭/
(?P<g1>[^/\\n]*)
-第一個必須匹配的捕獲組(必須匹配1次),除了/
(如果保留則也匹配\\n
)之外的任何字符,匹配0次或更多次 /?
-0或1 /
字符 (?P<g2>[^/\\n]*)?
-與/
和\\n
以外的0個或多個字符匹配的可選第二捕獲組 (?<!/)$
-字符串結尾,前面帶有/
以外的其他字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.