我的问题是,我想不出一种定义正则表达式的方法,以防万一前面只有+,-,[或空格,而后面只有方括号或空格。另外,如果有负号,则应打印出来。我曾尝试寻找类似的案例,并花了相当长的时间解决问题,但未能给出答案。
所以我现在有:
\b([+-]?[0-9]+)\b
它应该从以下内容中打印出16,-55和+18:
[16 ] [a44] [fg] [230+] [+-50] [ -55 ]x [+18]aff
目前,它会另外打印不应打印的50和230。如有任何提示,我将不胜感激。
答案 0 :(得分:0)
您可以使用
(?<![\w+-])[+-]?\d+(?![\w+-])
请参见regex demo
详细信息
(?<![\w+-])
-如果在当前位置的左侧紧跟着一个单词-
或+
char [+-]?
-可选的+
或-
\d+
-1个以上数字(?![\w+-])
-如果在当前位置的右边立即有一个单词-
或+
字符,则负匹配将使匹配失败。import re
rx = r"(?<![\w+-])[+-]?\d+(?![\w+-])"
s = "[16 ] [a44] [fg] [230+] [+-50] [ -55 ]x [+18]aff"
print( re.findall(rx, s) )
# => ['16', '-55', '+18']