簡體   English   中英

用雙引號提取字符串中的字符串

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

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