簡體   English   中英

條件Python正則表達式和命名組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM