正则表达式的数字和加/减号

时间:2019-11-13 16:28:11

标签: python regex

我的问题是,我想不出一种定义正则表达式的方法,以防万一前面只有+,-,[或空格,而后面只有方括号或空格。另外,如果有负号,则应打印出来。我曾尝试寻找类似的案例,并花了相当长的时间解决问题,但未能给出答案。

所以我现在有:

\b([+-]?[0-9]+)\b

它应该从以下内容中打印出16,-55和+18:

[16 ] [a44] [fg] [230+] [+-50] [ -55 ]x [+18]aff

目前,它会另外打印不应打印的50和230。如有任何提示,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用

(?<![\w+-])[+-]?\d+(?![\w+-])

请参见regex demo

详细信息

  • (?<![\w+-])-如果在当前位置的左侧紧跟着一个单词-+ char
  • ,则负向查找将使匹配失败
  • [+-]?-可选的+-
  • \d+-1个以上数字
  • (?![\w+-])-如果在当前位置的右边立即有一个单词-+字符,则负匹配将使匹配失败。

Python demo

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']