python - Python 的正则表达式 findall 不返回 Unicode 文本的所有匹配项
问题描述
我有一个 unicode 文本,其中包含一个期刊列表,其中包含每个期刊的一些详细信息。我只想检索期刊的名称。
我的文字很大,看起来像这样:
匈牙利布达佩斯,H-1117 社会科学引文索引艺术与人文引文索引 15)15。ACTA LITERARIA Semiannual ISSN: 0717-6848 UNIV CONCEPCION, FAC HUMANIDADES ARTE, CASILLA 160-C, CORREO 3, CONCEPCION, CHILE, 00000 Arts & Humanities Citation Index 16) 16. ACTA MUSICOLOGICA Semiannual ISSN: 0001-6241 INT MUSICOLOGICAL SOC, BOX 561, BASEL, SWITZERLAND, CH-4001 Arts & Humanities 引文索引 Current Contents - Arts & Humanities 17) 17. ACTA ORIENTALIA ACADEMIAE 匈牙利科学季刊 ISSN: 1588-2667 AKADEMIAI KIADO ZRT, BUDAFOKI UT 187-189-A-3, BUDAPEST , HUNGARY, H-1117 Arts & Humanities 引文索引 5 تاریخ انتشار: 89/2/62 پژوهشگاه و شبکه آزمایشگاهی 98/3 :Code Current Contents - Arts & Humanities 18) 18. ACTA哲学半年刊ISSN:1121-2179 FABRIZIO SERRA EDITORE, PO BOX NO,1, SUCC NO. 8, PISA, ITALY, I-56123 Arts & Humanities Citation Index Current Contents - Arts & Humanities
它想要比赛返回
跨语言和跨文化 半年一次
ACTA ANALYTICA-分析传统中的哲学国际期刊季刊
考古学年刊
等等
我已经尝试过(https://regex101.com/r/eyafNd/1)并且在 reg101 网站上,它似乎有效。
regex = r"^(\d+\)\s*\d+\.\s+)(.*?) ISSN"
l = re.findall(regex,txt,re.IGNORECASE)
print(len(l))
print(l)
它返回的是只有 1 个结果的列表,如下所示
[('6) 6. ', 'ACROSS LANGUAGES AND CULTURES Semiannual')]
任何帮助,将不胜感激。
CS
解决方案
也许看看这个正则表达式:
(?<=\d\.\s).+?(?=\sISSN)
regex = r"(?<=\d\.\s).+?(?=\sISSN)"
l = re.findall(regex, txt, re.I)
print(len(l))
print(l)
这表示在数字+点+空格之后开始匹配,直到字符whitespace+ISSN。然后,我可以确认,当我编写您的文本时,我会收到以下带有您的代码的输出列表:
['ACROSS LANGUAGES AND CULTURES Semiannual', 'ACTA ANALYTICA-INTERNATIONAL PERIODICAL FOR PHILOSOPHY IN THE ANALYTICAL TR ADITION Quarterly', 'ACTA ARCHAEOLOGICA Annual'...]
推荐阅读
- windows-10 - 尝试在 virtualbox 上运行 macOS Catalina 10.15 时卡在 EFI shell 上
- c# - ML 模型在重新训练后不会重新加载(仅在之前进行过预测的情况下)
- php - 使用 htaccess 和 php 开关配置 url 时我很困惑
- solidity - 以太坊构造函数混淆
- flutter - 如何在三个容器之间切换
- mongodb - 转储在 docker 容器上运行的 mongo 数据库
- node.js - Mongoose 和 Express JS,查找范围内的文档
- typescript - 如何将索引签名与已知属性混合?
- python - 我怎样才能得到无尽的期望?
- javascript - JavaScript 如何创建动态变量