正则表达式 sre_constants.error: 错误的字符范围

4

我尝试使用以下正则表达式从另一个字符串中获取JSON字符串:

YAHOO.Finance.SymbolSuggest.ssCallback\((.*?)\)

它在regex101.com上可以工作,但是当我在我的代码中使用它时:

import re
import json
import requests

def stock_lookup(name):

    url = "http://autoc.finance.yahoo.com/autoc?query={0}&callback=YAHOO.Finance.SymbolSuggest.ssCallback".format(name)

    response = requets.get(url)

    json_data = json.loads(re.match(data,"YAHOO.Finance.SymbolSuggest.ssCallback\((.*?)\)"))


    return json_data

我遇到了这个错误:

sre_constants.error: 错误的字符范围

谢谢。
1个回答

1
你在match方法中颠倒了参数的顺序,正则表达式应该放在前面。
re.match("YAHOO.Finance.SymbolSuggest.ssCallback\((.*?)\)", data)

re.match文档:

re.match(pattern, string, flags=0)

错误出现的原因可能是data中有一些z-A类型的范围。


啊哈哈,非常感谢。我想我把我的脑袋落在了某个地方。 - josuebrunel
也许你也用C#编程,其中Regex.Match将输入字符串作为第一个参数接受,模式作为第二个参数。这个问题并不罕见。 - Wiktor Stribiżew
没错,我只是从C#代码示例中获取了这个例子,尽管我不是C#程序员。 - josuebrunel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接