使用正则表达式查找后跟d的数字

2024-10-06 11:27:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在参考文献列表中找到参考文献的索引。让我举例说明:

这是我从一个网站上找到的参考资料清单:

ref = "<p class="references" style="font-size:15px">1. Mcminn. (2003). Last's Anatomy. Elsevier Australia. ISBN:0729537528. <a href="http://books.google.com/books?vid=ISBN0729537528">Read it at Google Books</a> - <a href="http://www.amazon.com/gp/product/0729537528">Find it at Amazon</a><br>
2. Netter, F. H. (2019). Atlas of human anatomy. Philadelphia, PA: Elsevier.</p>"

我想我可以用这个得到参考索引(即“1”和“2”):

^{pr2}$

但是我得到了所有的号码:[1, 2003, 729537528, 2, 2019]

我怎样才能得到引用索引的列表,也就是[1, 2]我想一种方法是找到后面跟一个点的数字,但是我不知道怎么做。在


Tags: comrefhttp列表网站styleitbooks
3条回答

你可以试试这个:

import re
o = re.findall(r'[>|\s](\d{1})\.', ref)
print(o)

将输出:

^{pr2}$

您可能需要定义更多的结构,因为只有数字(由\d捕获的数字)和点也将捕获“8”。在ISBN编号的末尾:国际标准书号:0729537528。这里我使用了几个字符(在这个例子中)有助于区分这两种情况。一个引用前面有“>;”,另一个引用前面有空格(\s)。在

你必须“逃出”周期,这样“[0-9]*\”之类的东西应该会起作用。这是我的想法,所以可能有点错误;我也会让你自己去弄清楚为什么会有。在

请注意,Python中的Regex表达式与其他实现略有不同。有关详细信息,请参见:

参见:https://docs.python.org/3/library/re.html

建议你从这里开始:

https://docs.python.org/3/howto/regex.html#regex-howto

以下是图书馆页面的相关部分(向下约1/3):

特殊序列由“\”和下面列表中的一个字符组成。如果普通字符不是ASCII数字或ASCII字母,则结果RE将匹配第二个字符。例如,\$与字符“$”匹配。在

对于eqivalent Python2.x页面,请更改页面左上角的版本选择器。在

你可以用

list(map(int, re.findall(r"(?<![^\s>])([0-9]+)\. ", ref)))

Python demo

^{pr2}$

详细信息

  • (?<![^\s>])-如果当前位置的左边有一个字符而不是空白和>,则匹配失败
  • ([0-9]+)-第1组:一个或多个数字(它将是re.findall的输出值)
  • . -a.和一个空格(用\s替换正则空格以匹配任何空格)。在

参见regex demo。在

相关问题 更多 >