如何在 Python 正则表达式搜索中使用变量?

how to use variable inside Python a regular expression search?

任何人都可以告诉我如何在 Python 正则表达式搜索中使用变量 url 吗?Url 是传递给包含以下代码的函数的变量。我尝试了以下方法,但不断得到 error.Hope 帮助我提前修复此问题 error.Thanks。 示例 str 和 url 值:

str='.......href="http://somewebsite:8080/hls/1.m3u8?session=34534525".....'
url='http://somewebsite:8080/hls/1.m3u8?session='

python代码:

foundValue= re.search('+url+(.*)"', str)
print 'foundValue:'
print foundValue.group(1);

xbmc 日志错误:

ERROR: EXCEPTION Thrown (PythonToCppException) :
 -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <class 'sre_constants.error'>
Error Contents: nothing to repeat
Traceback (most recent call last):
File "F:\......\addon.py", line 281, in <module>
play_video(url)
File "F:\.......\addon.py", line 160, in play_video
foundValue = re.search('+url+(.*)"', str)
File "F:\.....\XBMC\system\python\Lib\re.py", line 142, in search
return _compile(pattern, flags).search(string)
File "F:\....\XBMC\system\python\Lib\re.py", line 242, in _compile
raise error, v # invalid expression
error: nothing to repeat
-->End of Python script error report<--

猜猜你想要这个:

foundValue= re.search(re.escape(url)+r'(.*?)"', str1)

也不要使用 str,因为它是内置的。

另一种选择是使用格式来制作字符串:

found_value = re.search(r'{0}(.*)"'.format(url), search_string)

请注意,Python 中变量名称的标准是 words_separated_by_underscores(参见 PEP 008),正如@vks 提到的,避免使用 str 作为变量因为它隐藏了内置 str class.