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