2012-10-11 71 views
1

我正在寻找一个正则表达式的匹配将1〜数n次出现和算术运算符的只有一个发生(仅+或 - 被允许)正则表达式匹配数(S)和算术运算符

例如,它应该匹配-123或123-或+123或123+

这是我迄今为止

import re 

number = "-123" 

if re.findall(r"[0-9]+[+|-]?", number): 
    return True 
else: 
    return False 
+0

你当然不需要运算符expr中的'|'(尽管'-'可能需要先去)......你还需要解析一个不是数字的字符串,所以调用'str(number) '这些只是我注意到的两个问题 –

+0

'or'是什么意思?提供完整的字符串并指定哪一部分必须匹配 –

+0

只有一次出现+或 - 以及一次或多次出现的数字 – wadapav

回答

0

尝试这样的:

In [55]: strs 
Out[55]: '+123 abc 123 -123 123- 123+ 14 foo bar' 

    #you need to escape '+'and '-' In order to search them 

In [56]: re.findall(r"\d+[\+|\-]{1}|[\-|\+]{1}\d+",strs) 
Out[56]: ['+123', '-123', '123-', '123+']