如何使用python只获取括号之间的数字

박형렬*_*박형렬 1 python regex

这是文本:\xec\x97\x90\xec\xbd\x94\xed\x94\x84\xeb\xa1\x9c\xeb\xb9\x84\xec\x97\xa0 (247540/\xeb\xa7\xa4\ xec\x88\x98)\xeb\x8c\x80\xec\x9e\xa5\xeb\x8b\x98\xeb\xa8\xbc\xec\xa0\x80 24\xeb\x85\x84\xec\x9c\xbc\ xeb\xa1\x9c\xea\xb0\x80\xea\xb2\xa0\xec\x8a\xb5\xeb\x8b\x88\xeb\x8b\xa4

\n

我只想得到 247540

\n
result = re.search(r"\\(([0-9]+)\\)", link.text)\nprint(result, link.text)\n
Run Code Online (Sandbox Code Playgroud)\n

它返回无。

\n

这是完整的代码

\n
import requests\nfrom bs4 import BeautifulSoup\nimport re\n\nurl = r"https://securities.miraeasset.com/bbs/board/message/list.do?categoryId=1545"\n\nresponse = requests.get(url)\n\nif response.status_code == 200:\n    html = response.text\n    soup = BeautifulSoup(html, "lxml")\n    link = soup.select_one("#bbsTitle0")\n    href = link.get("href")[16:-1].replace("'", "")\n    arr = list(map(int, href.split(",")))\n    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(\n        arr[0], arr[1]\n    )\n    result = re.search(r"\\(([0-9]+)\\)", link.text)\n    print(result.group(1), link.text)\n
Run Code Online (Sandbox Code Playgroud)\n

Nie*_*ano 5

您试图匹配的\\(([0-9]+)\\)只是文本,(247540)而实际上数字后面还有其他字符(247540/\xeb\xa7\xa4\xec\x88\x98)。因此,您还应该匹配数字后面的下一个字符。所以尝试:

\n
\\(([0-9]+).*?\\)\n
Run Code Online (Sandbox Code Playgroud)\n

或者,如果您还期望数字可能位于括号中间而不是实际开头:

\n
\\(.*?([0-9]+).*?\\)\n
Run Code Online (Sandbox Code Playgroud)\n

示例运行:

\n

在此输入图像描述

\n

在哪里:

\n
    \n
  • \\(- 匹配左括号
  • \n
  • .*?- 以非贪婪的方式匹配任何字符
  • \n
  • ([0-9]+)- 捕获 1 个或多个数字。由于前面的模式是非贪婪的,因此这将捕获尽可能多的连续数字。
  • \n
  • .*?- 以非贪婪的方式匹配任何字符
  • \n
  • \\)- 匹配右括号。由于前面的模式是非贪婪的,因此这将匹配最接近的括号。
  • \n
\n