繁体   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