2016-07-03 80 views
0
pattern = r'(\S+)\s*(![;])/\s*(\S+)' 
regex = re.compile(pattern,re.DOTALL) 
for result in regex.findall(data): 
    f.write("Division" + str(result)+ "\n\n\n") 

我正在使用以下表達式來捕獲除法發生時的情況,但想要忽略除法符號前面有「;」 。此正則表達式不起作用如何捕獲除法並忽略以分號爲前綴

我該如何使它工作?

回答

1

使用negative look-behind assertion/只有/

pattern = r'(\S+)\s*(?<!;)/\s*(\S+)' 
  • (?<!;)/將匹配不被;

>>> re.findall(r'(\S+)\s*(?<!;)/\s*(\S+)', '1/2 and 1;/4 12/6') 
[('1', '2'), ('12', '6')] 
之前