1

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

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

或者

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

或者

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

结果应该是

value
1234
http://stackoverflow.com/
4

4 回答 4

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/']

编辑:好的,我看到你可以有一个 URL。我已经修改了模式以将其考虑在内。

于 2013-06-19T15:40:09.197 回答
2

使用这个正则表达式:

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

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

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

于 2013-06-19T15:35:20.110 回答
1

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

于 2013-06-19T15:29:33.417 回答
1

假设格式保持一致:

re.findall('debug_string:([^\/]+)\/##', string)
于 2013-06-19T15:37:33.577 回答