[英]extract string within string with out double quote
這只是為了學習目的,我有以下代碼。 如果我想用雙引號提取'abcbc'
怎么辦? 我也試過re.search(r'\\A\\"(.*?)\\"',a).group()
注意到變化。
>>> a = "\"abcbc\" lol"
>>> re.search(r'\A"(.*?)"',a).group()
'"abcbc"'
如果我將模式更改為'\\A"(.*?)'
這應該只是在雙引號后返回所有內容?但是它給出了以下內容。有什么我錯的嗎?
>>> re.search(r'\A"(.*?)',a).group()
'"'
您正在捕獲組中所需的內容,但通過調用不帶參數的group()
,您將返回整個匹配(組0),而不是您想要的組(即組1)。 調用.group(1)
返回第一個組,它有你想要的。
>>> a = "\"abcbc\" lol"
>>> re.search(r'\A"(.*?)"',a).group(1)
'abcbc'
至於你的第二個問題, *?
非貪婪:它會盡可能少地匹配。 由於*
允許匹配零, *?
如果它可以匹配任何東西---它可以,因為你之后沒有任何東西強迫它匹配到某一點。 使用它之后的引用,它將匹配盡可能少的匹配下一個引號,這迫使它繼續消耗文本,直到它達到關閉引用。 但沒有引用,它只是沒有匹配,因為它沒有理由繼續匹配。
如果你使用一個非貪婪的,它確實會匹配雙引號后的所有內容 ---雙引號之后的所有內容 ,直到行尾:
>>> re.search(r'\A"(.*)',a).group()
'"abcbc" lol'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.