工会主席-阿冰 2024-04-14 18:16 采纳率: 33.3%
浏览 9
已结题

正则表达式.*?的匹配逻辑

待匹配文本如下
access_token: 79_yZa1nQvm7YposlGBZE8yyYmmO_dq6Nu6YXpEL-AKrtiMT1V2OEb7UhG4iC4ByJr9bkMSf-30K_SmBeGGWDJ7eqvXbRjGcDduydoSKLcWGsmUl0ejywSd52NymcAEGFhAEANPO:access_token
正则表达式
.?
匹配结果是
79_yZa1nQvm7YposlGBZE8yyYmmO_dq6Nu6YXpEL-AKrtiMT1V2OEb7UhG4iC4ByJr9bkMSf-30K_SmBeGGWDJ7eqvXbRjGcDduydoSKLcWGsmUl0ejywSd52NymcAEGFhAEANPO:access_token
感觉【access_token: 】也符合正则表达式【.
?】匹配的范围,不知道为什么匹配不到文本开头的【access_token: 】,但是能匹配到文本结尾的【:access_token】

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-14 18:16
    关注

    引自免费微信小程序:皆我百晓生

    在正则表达式中,. 表示匹配任意单个字符(除了换行符),* 表示前面的字符可以重复零次或多次,而 ? 则是一个可选量词,使得前面的字符尽可能少地匹配。因此,.*? 的含义是匹配尽可能少的任意字符。

    当你在文本中使用 .*? 时,它会从当前位置开始尝试匹配尽可能少的字符,直到遇到下一个满足模式的部分。在这个例子中,由于没有指定特定的模式来限制匹配的开始位置,所以 .*? 将匹配从第一个字符开始直到文本结束的所有字符。这导致了整个字符串被匹配,因为你没有提供一个明确的停止条件来让它在遇到 "access_token:" 之前停下来。

    如果你想要匹配的是 "access_token:" 后面的内容,并且不包括 "access_token:", 可以使用下面的正则表达式:

    access_token:\s*(.*?)\s*:\s*access_token
    

    这里的关键在于使用了圆括号 ( ) 来创建一个捕获组,这样我们就可以提取出匹配的内容。.*? 在这个上下文中仍然表示尽可能少地匹配任意字符,但这次它是在寻找 "access_token:" 和 ":access_token" 之间的内容。\s* 匹配任意数量的空白字符,以处理可能存在的空格或制表符。

    下面是使用 Python 中的 re 模块进行匹配的示例代码:

    import re
    
    text = "access_token: 79_yZa1nQvm7YposlGBZE8yyYmmO_dq6Nu6YXpEL-AKrtiMT1V2OEb7UhG4iC4ByJr9bkMSf-30K_SmBeGGWDJ7eqvXbRjGcDduydoSKLcWGsmUl0ejywSd52NymcAEGFhAEANPO:access_token"
    
    match = re.search(r'access_token:\s*(.*?)\s*:\s*access_token', text)
    if match:
        result = match.group(1)
        print(result)
    else:
        print("No match found")
    

    运行这段代码,你会得到输出:79_yZa1nQvm7YposlGBZE8yyYmmO_dq6Nu6YXpEL-AKrtiMT1V2OEb7UhG4iC4ByJr9bkMSf-30K_SmBeGGWDJ7eqvXbRjGcDduydoSKLcWGsmUl0ejywSd52NymcAEGFhAEANPO,这是你想要匹配的部分。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月16日
  • 修改了问题 4月16日
  • 修改了问题 4月15日
  • 创建了问题 4月14日

悬赏问题

  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused