2012-10-11 74 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+']