如何使用正则表达式从这样的字符串中提取两个值?

时间:2013-06-19 15:26:54

标签: python regex

如何使用一个正则表达式从以下字符串中获取值?

/*##debug_string:value/##*/

/*##debug_string:1234/##*/

/*##debug_string:http://stackoverflow.com//##*/

结果应为

value
1234
http://stackoverflow.com/

4 个答案:

答案 0 :(得分:2)

使用此正则表达式:

[^:]+:([^/]+)

并使用捕获组#1作为您的价值。

现场演示:http://www.rubular.com/r/FxFnpfPHFn

答案 1 :(得分:2)

试图阅读你的模式背后

re.findall("/\*##debug_string:(.*?)/##\*/", your_string)

请注意,由于您未逃避*,因此您的变体无效。在正则表达式中,*表示重复前一个字符/组。如果您的确是*字符,则必须使用\*

import re
print re.findall("/\*##debug_string:(.*?)/##\*/", "/*##debug_string:value/##*/")
print re.findall("/\*##debug_string:(.*?)/##\*/", "/*##debug_string:1234/##*/")
print re.findall("/\*##debug_string:(.*?)/##\*/", "/*##debug_string:http://stackoverflow.com//##*/")

执行为:

['value']
['1234']
['http://stackoverflow.com/']

编辑:好的,我看到你可以拥有一个网址。我修改了模式以考虑它。

答案 2 :(得分:1)

你的正则表达式将是:.*:(.*)/.+。第1组将是您正在寻找的。但是,这是一个真正包容的正则表达式,您可能希望发布更多详细信息,以便您可以创建更多限制。

答案 3 :(得分:1)

假设格式保持一致:

re.findall('debug_string:([^\/]+)\/##', string)