【发布时间】:2020-03-19 21:53:35
【问题描述】:
我正在尝试使用 python 的正则表达式在字符串中的括号内查找整数。规则是数字和括号之间可以有空格,但除了构成整数的字符之外,没有其他字符。这是我的代码:
import re
a = " afd [asd] [12 ] [a34] [ -43 ]tt [+12]xxx"
b = " afd [asd] [12 ] [a34] [ -43 ]tt [+12]xxx!"
c = " afd [128+] [47 ] [a34] [ +-43 ]tt [+12]xxx"
from_a = re.findall(r'\[[\s+]*(-?\d+)\s*\]',a)
from_b = re.findall(r'\[[\s+]*(-?\d+)\s*\]',b)
from_c = re.findall(r'\[[\s+]*(-?\d+)\s*\]',c)
这个特殊的正则表达式适用于字符串 a 和 b 并提供所需的输出。但是,在字符串 c 中,当括号 '[' 或空格后有两个(+ 或 -)符号时,正则表达式应忽略该整数。
编辑
expected results
from_a = [12,-43,12]
from_b = [12,-43,12]
from_c = [47,12]
【问题讨论】:
-
为什么要忽略它?
+与[\s+]*匹配,-与-?匹配 -
如果您想允许可选的
+或-但不能同时使用,请使用[-+]?\d+ -
一次只能有一个 + 或 - 号。如果有两个,则需要忽略整数
-
你的意思是你想要
\[\s*(-?\d+)\s*]?还是\[\s*([-+]?\d+)\s*]?你应该已经指出了预期的结果。 -
希望我的回答有所帮助。
标签: regex python-3.x