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

使用Regex拆分标题与URL配对及Python正则全匹配问题求助

解决书籍标题与URL连续字符串的拆分问题

问题根源

你之前用的正则\w*\s\w*\s\w*://\w*.\w*/\w*\s有两个核心缺陷:

  • \w*只能匹配字母、数字和下划线,完全覆盖不了书名里的连字符、标点等特殊字符,而且固定了单词数量,没法适配长短不一的书名。
  • 只返回第一个匹配结果是因为你用了re.match()或re.search(),这两个方法只会找第一个符合条件的内容,要拿全量结果得用专门的方法。

正确的正则写法

用这个正则可以匹配任意包含特殊字符的书名,以及对应的http/https开头的URL:

pattern = r'(.+?)(https?://\S+)'
  • (.+?):非贪婪模式匹配书名,会把URL之前的所有内容(包括空格、连字符、标点)都捕获为第一组,直到遇到http或https开头的URL。
  • (https?://\S+):匹配http/https开头的完整URL,\S+会匹配所有非空白字符,直到遇到空格(也就是下一组内容的开始)。

Python代码实现

直接用re.findall()就能获取所有匹配的分组对,然后循环输出每行一组:

import re

# 替换成你的连续字符串输入
input_text = "Python编程入门-从新手到高手 https://example.com/book1 数据结构与算法分析 https://example.com/book2 机器学习实战:基于Scikit-Learn和TensorFlow https://example.com/book3"

pattern = r'(.+?)(https?://\S+)'
matches = re.findall(pattern, input_text)

# 遍历结果,每行输出一组标题和URL
for title, url in matches:
    # 去除标题末尾可能多余的空格
    print(f"{title.strip()} {url}")

如果需要导入Word,直接复制打印的结果粘贴即可,也可以把结果整理成字符串后写入.docx文件。

补充说明

如果你的字符串末尾没有空格,正则依然能正常匹配,因为\S+会匹配到字符串结尾。要是遇到URL里包含?、#这类特殊字符,这个正则也能兼容,因为\S包含除空白外的所有字符。

内容的提问来源于stack exchange,提问作者Matan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:25:31