这是文本:\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
\nresult = re.search(r"\\(([0-9]+)\\)", link.text)\nprint(result, link.text)\nRun Code Online (Sandbox Code Playgroud)\n它返回无。
\n这是完整的代码
\nimport 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)\nRun Code Online (Sandbox Code Playgroud)\n
您试图匹配的\\(([0-9]+)\\)只是文本,(247540)而实际上数字后面还有其他字符(247540/\xeb\xa7\xa4\xec\x88\x98)。因此,您还应该匹配数字后面的下一个字符。所以尝试:
\\(([0-9]+).*?\\)\nRun Code Online (Sandbox Code Playgroud)\n或者,如果您还期望数字可能位于括号中间而不是实际开头:
\n\\(.*?([0-9]+).*?\\)\nRun Code Online (Sandbox Code Playgroud)\n示例运行:
\n\n在哪里:
\n\\(- 匹配左括号.*?- 以非贪婪的方式匹配任何字符([0-9]+)- 捕获 1 个或多个数字。由于前面的模式是非贪婪的,因此这将捕获尽可能多的连续数字。.*?- 以非贪婪的方式匹配任何字符\\)- 匹配右括号。由于前面的模式是非贪婪的,因此这将匹配最接近的括号。