You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何用正则提取括号内纯数字?匹配返回None问题求解

问题根因

你使用的正则\(([0-9]+)\)要求括号内仅包含纯数字,但实际提取到的节点文本括号内为247540/매수,数字后还有斜杠、韩文等其他字符,无法匹配到闭合的右括号,因此返回None。

修正方案

调整正则表达式,仅捕获左括号后紧跟的连续数字即可,无需强制匹配到右括号:

# 调整后的正则,捕获左括号后的第一串连续数字
result = re.search(r"\((\d+)", link.text)
# 增加非空判断,避免空值调用方法报错
if result:
    print(result.group(1), link.text)
else:
    print("未匹配到目标数字")

如果要更严谨,确保匹配的数字确实在括号范围内,可以使用如下正则:

result = re.search(r"\((\d+)[^)]*\)", link.text)

完整修正代码

import requests
from bs4 import BeautifulSoup
import re

url = r"https://securities.miraeasset.com/bbs/board/message/list.do?categoryId=1545"

response = requests.get(url)

if response.status_code == 200:
    html = response.text
    soup = BeautifulSoup(html, "lxml")
    link = soup.select_one("#bbsTitle0")
    href = link.get("href")[16:-1].replace("'", "")
    arr = list(map(int, href.split(",")))
    linkPage = r"https://securities.miraeasset.com/bbs/board/message/view.do?messageId={0}&messageNumber={1}&messageCategoryId=0&startId=zzzzz~&startPage=1&curPage=2&searchType=2&searchText=&searchStartYear=2020&searchStartMonth=09&searchStartDay=10&searchEndYear=2021&searchEndMonth=09&searchEndDay=10&lastPageFlag=&vf_headerTitle=&categoryId=1545".format(
        arr[0], arr[1]
    )
    # 修正正则匹配逻辑
    result = re.search(r"\((\d+)", link.text)
    if result:
        print(result.group(1), link.text)
    else:
        print("未匹配到目标数字")

内容的提问来源于stack exchange,提问作者박형렬

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:48:02