Regex返回字符串中方括号中的整数

2024-04-26 12:26:05 发布

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

所以我发现应用正则表达式有困难。需要创建一个函数,该函数将返回字符串中括在括号中的整数列表。数字和括号之间可以有空格,但不能有其他字符。你知道吗

基本上调用函数:

integers_in_brackets(" afd [asd] [12 ] [a34] [ -43 ]tt [+12]xxx")

应给出:

[12, -43, 12]

此外,列表中带有“+”的整数中没有“+”符号。你知道吗

我已经试过了,但没用:

re.findall(r'[-]?\d+', " afd [asd] [12 ] [a34] [ -43 ]tt [+12]xxx")

这个返回:

['12', '34', '-43', '12']


Tags: integers函数字符串列表数字整数字符括号
3条回答

这里使用一个好的正则表达式并使用^{}将列表中的项转换为整数。你知道吗

import re

txt = "  afd [asd] [12 ] [a34]  [ -43 ]tt [+12]xxx"
rgx = "\[\s*\+?(-?\d+)\s*\]"
res = list(map(int, re.findall(rgx, txt)))
print(res)

提供:

[12, -43, 12]

试试这个:https://repl.it/repls/SizzlingTornUtility

它使用这个regex \[\s*([-+]?\d+)\s*\]

import re
def integers_in_brackets(string):
  answers = [int(a) for a in re.findall(r'\[\s*([-+]?\d+)\s*\]', string)]

  return answers
print(integers_in_brackets("  afd [asd] [12 ] [a34]  [ -43 ]tt [+12]xxx"))

退货

[12, -43, 12]

可能是杀伤力太大了,但它是有效的:

text = "  afd [asd] [12 ] [a34]  [ -43 ]tt [+12]xxx"
[''.join(re.findall(r'[-]?\d+', _)) for _ in re.findall(r'\[\s?[+]?[-]?\d+\s?\]', text)]

相关问题 更多 >