Python:如何使用正则表达式仅选择括号内的某些整数
Python: how to choose only certain integers within brackets using regex
我在编写一个在方括号中搜索整数的函数时被卡住了,该函数应该从输入字符串中找到括号中的所有整数,同时考虑到一个额外的限制:数字和括号之间可以有空格,但除了构成整数的字符外没有其他字符。
到目前为止,我编写了下面的代码,但它不适用于最后一次带有 +-43 的测试,它不应该算作一个整数。你能帮我解决这个问题吗?
谢谢!
import re
def integers_in_brackets(s):
l = list(int(s) for s in re.findall(r'\[\s*\+?(-?\d+)\s*\]', s))
print(l)
return list(l)
测试:
integers_in_brackets(" afd [asd] [12 ] [a34] [ -43 ]tt [+12]xxx")
integers_in_brackets("afd [asd] [12 ] [a34] [ -43 ]tt [+12]xxx!")
integers_in_brackets("afd [128+] [47 ] [a34] [ +-43 ]tt [+12]xxx!")
您的正则表达式完全按照字面意思表示可选加号后跟可选减号。如果这不是您想要的,也许您想要 加号或减号?
r'\[\s*([-+]?\d+)\s*\]'
如果你想要一个而不是两个,但捕获一个减号而不是一个加号,可以添加一个前瞻性的说“可选加号如果不是紧接着一个减号”:
r'\[\s*(?:\+(?!-))?(-?\d+)\s*\]'
我在编写一个在方括号中搜索整数的函数时被卡住了,该函数应该从输入字符串中找到括号中的所有整数,同时考虑到一个额外的限制:数字和括号之间可以有空格,但除了构成整数的字符外没有其他字符。
到目前为止,我编写了下面的代码,但它不适用于最后一次带有 +-43 的测试,它不应该算作一个整数。你能帮我解决这个问题吗?
谢谢!
import re
def integers_in_brackets(s):
l = list(int(s) for s in re.findall(r'\[\s*\+?(-?\d+)\s*\]', s))
print(l)
return list(l)
测试:
integers_in_brackets(" afd [asd] [12 ] [a34] [ -43 ]tt [+12]xxx")
integers_in_brackets("afd [asd] [12 ] [a34] [ -43 ]tt [+12]xxx!")
integers_in_brackets("afd [128+] [47 ] [a34] [ +-43 ]tt [+12]xxx!")
您的正则表达式完全按照字面意思表示可选加号后跟可选减号。如果这不是您想要的,也许您想要 加号或减号?
r'\[\s*([-+]?\d+)\s*\]'
如果你想要一个而不是两个,但捕获一个减号而不是一个加号,可以添加一个前瞻性的说“可选加号如果不是紧接着一个减号”:
r'\[\s*(?:\+(?!-))?(-?\d+)\s*\]'