【发布时间】:2023-03-15 06:42:01
【问题描述】:
嘿,
所以,我有以下字符串(我删除了很多数字,因为我们不需要它们):
编辑:见下文
text = """
<--
first+second=?
first:
146,399,163,403,170,379,147,394,146,399
second:
156,141,136,156,136
-->"""
我正在尝试找到一种方法来捕获列表中的第一个数字和另一个列表中的第二个数字(使用 python,re.findall())。 所以我的目标是让python返回一个这样的列表(对于“first:”和“second:”之间的“first”列表:
[146, 399, 163, 403,170,379,147,394,146,399]
不幸的是,我没有设法创建一个正则表达式来捕获用逗号/换行符括起来的一组数字,它们本身被包含在第一个和第二个(或其他)中。这样做时,我只能设法捕获我使用的边界内的第一组或最后一组数字。
这是我使用的错误表达之一。我已经尝试了很多其他方法,并在捕获组和其他东西上使用了量词,但我似乎无法做到正确。
first:.+(\d{2,3}).+second:
我知道首先捕获完整列表并将其拆分会更容易,但我想更好地理解正则表达式,因此我坚持使用它。
编辑:对不起...我应该添加更多的初始字符串,我缩短了太多。问题是,列表分为几行,就像这样(但仍然缩短了):
text = """
<!--
first:
146,399,163,403,170,393,169,391,166,386,170,381,170,371,170,355,169,346,167,335,170,329,170,320,170,
310,171,301,173,290,178,289,182,287,188,286,190,286,192,291,194,296,195,305,194,307,191,312,190,316,
332,155,348,156,353,153,366,149,379,147,394,146,399
second:
156,141,165,135,169,131,176,130,187,134,191,140,191,146,186,150,179,155,175,157,168,157,163,157,159,
77,155,81,148,87,140,96,138,105,141,110,136,111,126,113,129,118,117,128,114,137,115,146,114,155,115,
158,121,157,128,156,134,157,136,156,136
-->
""""
【问题讨论】:
-
你的编程语言?
-
我使用的是 python 3.5
-
在选择代码后使用按钮 {} 来格式化代码。不要为此使用引用环境。我在您的问题中没有看到 ANY stringg。 python 字符串看起来像
myNumbers = '1,2,3,4'或myOtherNumbers = "11,12,13,14" -
对于正则表达式,请给我们您的确切(可能缩短)数据 - 否则我们无法适应正则表达式。
-
对不起,字符串确实不正确。我指的是包含我希望在列表中捕获的内容,即“第一:”和“第二:”。整个代码块确实是我正在操作的字符串。数字列表要长得多,并且两个列表之前和之后都有更多的文本。如果您认为它相关,我会添加它。
标签: regex python-3.x