Python的Regex findall不返回Unicode文本的所有匹配项

问题描述 投票:2回答:1

我有一个unicode文本,其中包含期刊列表,其中包含一些期刊的详细信息。我只想检索期刊名称。

我的文字很大,看起来像这样:

6)6.多种语言和文化半年刊ISSN:1585-1923AKADEMIAI KIADO ZRT,BUDAFOKI UT 187-189-A-3,布达佩斯,匈牙利,H-1117社会科学引文索引人文科学引文索引7)7.哲理学分析国际期刊分析性交易季刊ISSN:0353-5150 SPRINGER,233 SPRING美国纽约州纽约市ST,10013艺术与人文科学引文索引8)8。考古学报年刊ISSN:0065-101X WILEY,111 RIVER ST,美国新泽西州霍博肯,07030-5774艺术与人文引文索引9)9。ACTA BOREALIA半年刊ISSN:0800-3831 ROUTLEDGE JOURNALS,TAYLOR&弗朗西斯有限公司(FRANCIS LTD),英格兰阿宾顿米尔顿公园2-4公园广场,牛津,OX14 4RN艺术与人文科学引文索引10)10。ISSN:0065-1141 UNIV FREE STATE,DEP ENG CLASSICAL LANG,邮政信箱339,南非布隆方丹9300艺术与人文科学引文索引11)11.塔斯拉尼亚历史学会年度ISSN:1406-2925爱沙尼亚学术出版社,爱沙尼亚塔林6科尔图,10130艺术与人文引文索引12)12.历史学报(ISTA HISTRIAE)三年期ISSN:1318-01854月:89/2/62密码:98/3:代码UNIV PRIMORSKA,SCI RES CENTRE KOPER,GARIBALDIJEVA 1,KOPER,斯洛文尼亚,CAPODISTRIA,SI-6000社会科学引文索引人文引文索引13)13. ACTA KOREANA半年刊ISSN:1520-7412 ACADEMIA KOREANA KEIMYUNG UNIV,1095 DALGUBEOLDAERO,韩国大邱DALSEO-GU,704-701艺术与人文引文索引当前目录-艺术与人文科学14)14.《语言学杂志》匈牙利季刊ISSN:1216-8076 AKADEMIAI KIADO ZRT,BUDAFOKI UT匈牙利布达佩斯187-189-A-3,H-1117社会科学引文索引艺术与人文引文索引15)15。半年刊ISSN:0717-6848 UNIV CONCEPCION,FAC人参艺术基金会,CASILLA 160-C,CORREO 3,CONCEPCION,智利,00000艺术与人文引用指数16)16.音乐学报半年刊ISSN:0001-6241 INT MUSICOLOGICALSOC,BOX 561,巴塞尔,瑞士,CH-4001艺术与人文引用索引当前目录-艺术与人文科学17)17. ACTA ORIENTALIA匈牙利学部科学季刊(ISSN):1588-2667 AKADEMIAIKIADO ZRT,BUDAFOKI UT 187-189-A-3,布达佩斯,匈牙利,H-1117艺术与人文引文索引5分:89/2/62期刊شبکهآزمایشگاهی98/3:代码当前目录-艺术与人文科学18)18.《哲学学报》半年刊ISSN:1121-2179 FABRIZIO SERRA EDITORE,PO BOX NO.1,SUCC NO。 8,比萨,意大利,I-56123艺术与人文引文索引当前目录-人文与艺术

想要比赛归还

跨语言和文化半年刊

哲学分析国际期刊的哲学分析性交易季刊

考古学年鉴

其他

我已经尝试过(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

python regex python-3.x findall
1个回答
4
投票

也许看看这个正则表达式:

(?<=\d\.\s).+?(?=\sISSN)

Regex Demo

regex = r"(?<=\d\.\s).+?(?=\sISSN)"
l = re.findall(regex, txt, re.I)
print(len(l))
print(l)

这表示要从number + dot + whitespace开始直到字符whitespace + ISSN开始匹配。然后,我可以确认当我编写您的文本时,我收到了包含您的代码的以下输出列表:

['ACROSS LANGUAGES AND CULTURES Semiannual', 'ACTA ANALYTICA-INTERNATIONAL PERIODICAL FOR PHILOSOPHY IN THE ANALYTICAL TR ADITION Quarterly', 'ACTA ARCHAEOLOGICA Annual'...]
© www.soinside.com 2019 - 2024. All rights reserved.