如何用单条正则表达式匹配含section和front的字符串(适配BeautifulSoup)
搞定你的正则匹配 + WSJ页面主体内容提取需求
1. 匹配同时包含section和front的正则表达式
你需要的是能匹配同时包含section和front两个词的字符串(不管它们的顺序、中间有没有连字符/其他字符),这里有两种好用的写法:
写法一(直观易懂)
.*section.*front.*|.*front.*section.*
原理是分别匹配“section在前front在后”和“front在前section在后”的情况,覆盖所有顺序可能。
写法二(更简洁高效,用正向预查)
(?=.*section)(?=.*front).+
(?=.*section):提前检查字符串里存在section(不管在哪个位置)(?=.*front):同理检查存在front.+:匹配整个符合条件的片段(如果是匹配HTML的class属性,直接用这个就行,不需要加首尾锚定符)
2. 结合BeautifulSoup提取WSJ页面主体内容
针对你提到的目标页面,假设主体内容在带有包含section/front类名的div里,直接上可运行的代码:
import re from bs4 import BeautifulSoup import requests # 获取页面HTML response = requests.get("https://www.wsj.com/news/business") soup = BeautifulSoup(response.text, "html.parser") # 用正则匹配class包含section和front的div target_div = soup.find("div", class_=re.compile(r"(?=.*section)(?=.*front)")) # 提取内容(这里示例提取格式化后的文本,你也可以根据需要获取完整HTML结构) if target_div: main_content = target_div.get_text(strip=True, separator=" ") print("提取到的主体内容:\n", main_content) else: print("未找到符合条件的主体div")
小提醒:运行前要确保已经安装了requests和beautifulsoup4库,用pip install requests beautifulsoup4就能快速安装。
如果实际页面的div还有其他特征(比如特定id),你可以在find方法里补充条件,比如soup.find("div", id="main-content", class_=re.compile(...))来缩小匹配范围,提升准确性。
内容的提问来源于stack exchange,提问作者Niner
相关产品推荐
相关产品推荐

