custom = 'number=value1;user=value2;yr=value3'
number=re.findall('number=(.+?);',custom)
user=re.findall('user=(.+?);',custom)
yr=re.findall('yr=(.+?)[;\w]',custom))
outcome:
print number
value1
我正在尝试从 custom 中提取 number、user 和 yr 的值。除了'yr',它都在工作,因为'yr'是最后一个词,它不以';'结尾。我尝试添加\w,但没有用。有没有办法以';'结尾或字符串结束?我可以搜索 custom[-1],但我只想知道如何使用正则表达式,而 yr 并不总是最后; number 或 user 有时可以放在最后。
请您参考如下方法:
您可以利用正则表达式回顾并使用如下正则表达式:
(?<==)(\w+)
因此,您可以对每种情况使用此正则表达式:
(?<=number=)(\w+)
(?<=user=)(\w+)
(?<=yr=)(\w+)
你的代码可以是这样的:
custom = 'number=value1;user=value2;yr=value3'
number=re.findall('(?<=number=)(\w+)',custom)
user=re.findall('(?<=user=)(\w+)',custom)
yr=re.findall('(?<=yr=)(\w+)',custom))
outcome:
print number
value1
更新:如 CommuSoft 在他的评论中指出,如果您有空格,正则表达式将不会捕获内容。因此,您可以使用以下方法改进正则表达式:
(?<==)([^;]+)
因此,您可以为每个参数设置如下内容:
(?<=number=)([^;]+)
(?<=user=)([^;]+)
(?<=yr=)([^;]+)
