Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式只找到一次_Python_Regex_Django_Django Templates - Fatal编程技术网

Python 正则表达式只找到一次

Python 正则表达式只找到一次,python,regex,django,django-templates,Python,Regex,Django,Django Templates,我有一个用于django模板标记的正则表达式来查找类似“bkz:something”的表达式。这是我的密码: @register.filter(name='bkzs') def bkzs(text): pattern = re.compile(r"(?P<start>.*)\(bkz: (?P<bkz>.*)\)(?P<end>.*)") link = r'\g<start>(bkz: <a href="/baslik/\g&

我有一个用于django模板标记的正则表达式来查找类似“bkz:something”的表达式。这是我的密码:

@register.filter(name='bkzs')
def bkzs(text):
    pattern = re.compile(r"(?P<start>.*)\(bkz: (?P<bkz>.*)\)(?P<end>.*)")
    link = r'\g<start>(bkz: <a href="/baslik/\g<bkz>"  title="\g<bkz>">\g<bkz></a>)\g<end>'
    text = pattern.sub(link, text)
它能工作,但只工作一次。它将文本中最后配对的部分配对。 如您所见,它会在文本中查找“bkz:某物”并向其添加超链接,但例如,当我们的文本为bkz:lorem bkz:ipsum bkz:dolor时,它只会向bkz:dolor部分添加超链接。我怎样才能使我的文本中所有的bkz都有效?
谢谢。

您可以使用惰性匹配:

r"(?P<start>.*?)\(bkz: (?P<bkz>.*?)\)(?P<end>.*?)"

re.findallregex,stringToSearch小心。*它是贪婪的。在这种情况下,我应该如何使用re.findallregex,stringToSearch?我对这些东西很陌生。我应该用什么来代替。*?这真的很有帮助。谢谢。
r"(?P<start>.*?)\(bkz: (?P<bkz>[^)]*)\)(?P<end>.*?)"