【问题标题】:Regex sre_constants.error: bad character range正则表达式 sre_constants.error:错误的字符范围
【发布时间】:2015-08-28 03:21:11
【问题描述】:

我正在尝试使用此正则表达式从另一个字符串中获取 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: 错误的字符范围

提前致谢

【问题讨论】:

    标签: python regex json


    【解决方案1】:

    您在 match 方法中放错了参数,正则表达式应该放在第一位。

    re.match("YAHOO.Finance.SymbolSuggest.ssCallback\((.*?)\)", data)
    

    re.match documentation:

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

    显示错误是因为data 中很可能存在一些z-A 类型的范围。

    【讨论】:

    • 啊哈哈非常感谢。我想我把我的大脑留在了某个地方
    • 也许您也使用 C# 编写代码,其中Regex.Match 接受输入字符串作为第一个参数,模式作为第二个参数。这个问题并不少见。
    • 没错,我只是从 C# 代码中得到示例,即使不是 C# 程序员。
    猜你喜欢
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多